创建一个具有相同值/对象的n个副本的数组?

2022-09-01 11:18:28

我想在数组中的每个索引处创建一个大小相同的值的数组。在Java中做到这一点的最佳方法是什么?n

例如,如果 为 5 且值为布尔值,则数组应为:nfalse

= [false, false, false, false, false]

答案 1

您可以尝试使用:

boolean[] array = new boolean[5];
Arrays.fill(array, false);

手动数组填充的第二种方法:

boolean[] array = new boolean[] {false, false, false, false, false};

答案 2
List<Integer> copies = Collections.nCopies(copiesCount, value);

javadoc here.

这比'Arrays.fill'解决方案更好,原因如下:

  1. 它很好,很光滑,
  2. 它消耗更少的内存(参见源代码),这对于要复制的大量副本或巨大的对象非常重要,
  3. 它创建了一个不可变的列表,
  4. 它可以创建非基元类型对象的副本列表。不过,应该谨慎使用,因为元素本身不会重复,get()方法将为每个索引返回相同的值。最好提供一个不可变的对象进行复制,或者确保它不会被更改。

列表比数组更酷:)但是,如果你真的真的想要一个数组,那么你可以执行以下操作:

Integer[] copies = Collections.nCopies(copiesCount, value)
                              .toArray(new Integer[copiesCount]);