Java中等效的指针数组

时间:2014-05-10 16:35:06

标签: java c++ arrays

我正在将程序从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++;
    }
        }
}

2 个答案:

答案 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 (); 

创建自定义列表。