在Java中等价的指针数组

array of pointers equivalent in Java

本文关键字:指针 数组 Java      更新时间:2023-10-16

我正在将程序从c++重写为Java。在c++中,我有二维对象数组和指向这些对象的指针数组,以便对它们进行排序。不是数组的每个元素都包含object。我是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++;
    }
        }
}

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;
    }
}

具有解引用和成员访问的内部工作对程序员是隐藏的,其行为就像每个变量或数组单元格要么为空,要么直接为值。

可能会这样做,我想看看列表上的列表java:

List myList = new ArrayList <MyType> (); 
List myList = new ArrayList (); 

创建自定义列表。