有没有办法实例化一个可比较的数组,只是建立它的长度
Is there a way to instantiate a comparable array, just establishing its length
如果您愿意,我需要 "extract" 多个可比较对象的特定行。我知道该行的索引,我只需要它的副本。我试着做类似的事情:
masterList 是我需要从中提取的多数组。
Comparable[] extracted = masterList[i];
然而,这只是设置提取到地址而不是实际内容。
有没有简单的方法来做到这一点?
如果不能,我可以创建一个与 masterList[i] 行长度相同的空 Comparable[] 并循环添加到它吗?请注意,我的程序一开始并不知道它需要的行的长度,所以我不能将它硬编码到程序中。
更新代码:
Comparable[][] comparable = Arrays.copyOf(masterList, masterList[i].length);
当我 运行 这样做时,我确实得到了一个我需要的长度的数组,但它都是地址,而不是值。所以我运行一个循环来添加值
for(int i = 0; i<comparable.length; ++i){
comparable[i] = queries[masterIndex];
}
然而,这仍然是 returns 地址列表。
If not can I create an empty Comparable[] of the same length as the masterList[i] row and loop through to add to it?
不需要。你可以做
Comparable[] extracted = Arrays.copyOf(masterList[i], masterList[i].length);
Please note that my program doesn't start off knowing the length of the row it needs so I can't hard code it into the program.
看,您也不需要对长度进行硬编码。
你试过了吗System.arraycopy?
Comparable extracted[] = new Comparable[masterList[i].length]
System.arraycopy(masterList[i],0, extracted, 0, extracted.length);
这应该对 extracted
中 masterList[i][j=0 到 length-1] 处的元素进行浅表复制。
请注意,此处描述的两种解决方案都会抛出 NullPointerException if master list[i]
恰好是 null
.一定要检查它以避免令人讨厌的运行时意外。
如果你想复制数组的一部分,System.arraycopy
很方便。这是两种方法的good discussion。
希望对您有所帮助!
您可以使用 clone()
, because all arrays are Cloneable
:
Comparable[] extracted = masterList[i].clone();
这将创建 masterList[i]
的浅表副本(如果 masterList[i]
是 null
,您将得到一个 NullPointerException
)。
如果您愿意,我需要 "extract" 多个可比较对象的特定行。我知道该行的索引,我只需要它的副本。我试着做类似的事情:
masterList 是我需要从中提取的多数组。
Comparable[] extracted = masterList[i];
然而,这只是设置提取到地址而不是实际内容。
有没有简单的方法来做到这一点?
如果不能,我可以创建一个与 masterList[i] 行长度相同的空 Comparable[] 并循环添加到它吗?请注意,我的程序一开始并不知道它需要的行的长度,所以我不能将它硬编码到程序中。
更新代码:
Comparable[][] comparable = Arrays.copyOf(masterList, masterList[i].length);
当我 运行 这样做时,我确实得到了一个我需要的长度的数组,但它都是地址,而不是值。所以我运行一个循环来添加值
for(int i = 0; i<comparable.length; ++i){
comparable[i] = queries[masterIndex];
}
然而,这仍然是 returns 地址列表。
If not can I create an empty Comparable[] of the same length as the masterList[i] row and loop through to add to it?
不需要。你可以做
Comparable[] extracted = Arrays.copyOf(masterList[i], masterList[i].length);
Please note that my program doesn't start off knowing the length of the row it needs so I can't hard code it into the program.
看,您也不需要对长度进行硬编码。
你试过了吗System.arraycopy?
Comparable extracted[] = new Comparable[masterList[i].length]
System.arraycopy(masterList[i],0, extracted, 0, extracted.length);
这应该对 extracted
中 masterList[i][j=0 到 length-1] 处的元素进行浅表复制。
请注意,此处描述的两种解决方案都会抛出 NullPointerException if master list[i]
恰好是 null
.一定要检查它以避免令人讨厌的运行时意外。
System.arraycopy
很方便。这是两种方法的good discussion。
希望对您有所帮助!
您可以使用 clone()
, because all arrays are Cloneable
:
Comparable[] extracted = masterList[i].clone();
这将创建 masterList[i]
的浅表副本(如果 masterList[i]
是 null
,您将得到一个 NullPointerException
)。