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

我想在数组中的每个索引处创建一个大小为n的数组,其值相同。 在Java中执行此操作的最佳方法是什么?

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

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

您可以尝试:

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

手动arrays填充的第二种方法:

 boolean[] array = new boolean[] {false, false, false, false, false}; 
 List copies = Collections.nCopies(copiesCount, value); 

javadoc 在这里 。

这比’Arrays.fill’解决方案更好,原因有以下几点:

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

并且列表比数组更酷:)但如果你真的非常想要一个数组 – 那么你可以做以下事情:

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

Arrays.fill()将使用相同的值填充现有数组。 对于基元和Objects存在变体。

对于该特定示例,没有任何内容,默认情况下, boolean[]将初始化为[false, false, ...]

如果要使用非默认值初始化数组,则需要循环或使用Arrays.fill为您执行循环。

Arrays.fill(...)就是你要找的。

或者你可以用低级方式做到这一点。 创建一个包含n个元素的数组,并遍历放入相同元素的所有元素。

 int[] array = new int[n]; for (int i = 0; i < n; i++) { array[i] = 5; } 

试试这个 ..

  Boolean [] data = new Boolean[20]; Arrays.fill(data,new Boolean(false));