我正在将程序从C ++重写为Java。在C ++中,我有两维的对象数组和指向这些对象的指针数组来对它们进行排序。并非数组的每个元素都包含对象。 我是Java的新手,我不确定如何在没有指针的情况下做。 这是C ++中的一段代码:
Type ** array[SIZE*SIZE];
int k=0;
for(int i=0; i<SIZE; i++)
{
for(int j=0; j<SIZE; j++)
{
if(this->array_of_objects[i][j]!=NULL)
{
array[k] = &this->array_of_objects[i][j];
k++;
}
}
}
//then I sort
Java(错误)
Type array[];
for(int i=0; i<SIZE*SIZE; i++)
array[i] = null;
int k=0;
for(int i=0; i<SIZE; i++) {
for(int j=0; j<SIZE; j++) {
if(array_of_objects[i][j]!=null) {
array[k] = array_of_objects[i][j];
k++;
}
}
}
答案 0 :(得分:1)
java中的每个对象都是通过引用来管理的(可以认为是指针类型),所以你只需要直接使用该值:
Type[][] array_of_objects; // array_of_objects[i][j] contains either a value or null
Type[] array = new Type[SIZE * SIZE];
int i = 0;
for (Type[] subarray : array_of_objects) {
for (Type value : subarray) {
array[i++] = value;
}
}
具有解除引用和成员访问权限的内部工作对程序员是隐藏的,其行为类似于每个变量或数组单元格为null或直接值。
答案 1 :(得分:0)
可能会这样做我想在列表中列出java:
List myList = new ArrayList <MyType> ();
List myList = new ArrayList ();
创建自定义列表。