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

时间:2015-09-26 17:49:36

标签: java arrays comparable

如果你愿意的话,我需要“提取”多个可比数据库中的一个特定行。我知道行的索引,我只需要它的副本。我尝试过这样的事情:

masterList是我需要从中提取的多行数据。

place[k]

然而,这只是提取到地址而不是实际内容。

有一种简单的方法吗?

如果没有,我可以创建一个与masterList [i]行长度相同的空Comparable []并循环添加到它吗?请注意,我的程序并不是从知道所需行的长度开始的,因此我无法将其硬编码到程序中。

更新的代码:

Comparable[] extracted = masterList[i];

当我运行这个时,我确实得到了一个我需要的长度数组,但它是所有地址,而不是值。所以我运行了一个循环来添加值

    Comparable[][] comparable = Arrays.copyOf(masterList, masterList[i].length);
然而,

仍会返回地址列表。

3 个答案:

答案 0 :(得分:3)

  

如果没有,我可以创建一个与masterList [i]行长度相同的空Comparable []并循环添加到它吗?

没有必要。你可以做到

Comparable[] extracted = Arrays.copyOf(masterList[i], masterList[i].length);
  

请注意,我的程序并不知道所需行的长度,所以我无法将其编码到程序中。

请注意,您也不需要对长度进行硬编码。

答案 1 :(得分:2)

您是否尝试过System.arraycopy?

array_key_exists

这应该是Comparable extracted[] = new Comparable[masterList[i].length] System.arraycopy(masterList[i],0, extracted, 0, extracted.length); 中masterList [i] [j = 0到length-1]的元素的浅表副本。

请注意,如果 extracted恰好是master list[i],则此处描述的两个解决方案将抛出NullPointerException 。一定要检查一下,以避免令人讨厌的运行时惊喜。

如果要复制数组的一部分,

null会很方便。这两种方法都是good discussion

希望这有帮助!

答案 2 :(得分:0)

您可以使用clone(),因为所有数组都是Cloneable

Comparable[] extracted = masterList[i].clone();

这将创建masterList[i]的浅表副本(如果masterList[i]null,您将获得NullPointerException)。