gpt4 book ai didi

java - Java中等效的指针数组

转载 作者:行者123 更新时间:2023-11-28 06:52:54 27 4
gpt4 key购买 nike

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

最佳答案

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 或直接为值。

关于java - Java中等效的指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23583641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com