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

Xåp*_* - 13 java arrays copy

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

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

= [false, false, false, false, false]
Run Code Online (Sandbox Code Playgroud)

Inn*_*nty 18

List<Integer> copies = Collections.nCopies(copiesCount, value);
Run Code Online (Sandbox Code Playgroud)

javadoc 在这里.

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

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

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

Integer[] copies = Collections.nCopies(copiesCount, value)
                              .toArray(new Integer[copiesCount]);
Run Code Online (Sandbox Code Playgroud)


hsz*_*hsz 14

您可以尝试:

boolean[] array = new boolean[5];
Arrays.fill(array, false);
Run Code Online (Sandbox Code Playgroud)

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

boolean[] array = new boolean[] {false, false, false, false, false};
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 5

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


ass*_*ias 5

对于那个特定的例子,什么都没有,默认情况下aboolean[]将被初始化[false, false, ...]

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