有没有办法实例化一个可比较的数组,只是建立它的长度

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)。