28

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

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

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

7 回答 7

32

你可以试试:

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

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

boolean[] array = new boolean[] {false, false, false, false, false};
于 2013-01-11T10:48:16.663 回答
29
List<Integer> copies = Collections.nCopies(copiesCount, value);

javadoc在这里

这比 'Arrays.fill' 解决方案要好有几个原因:

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

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

Integer[] copies = Collections.nCopies(copiesCount, value)
                              .toArray(new Integer[copiesCount]);
于 2015-01-13T11:13:50.770 回答
6

Arrays.fill()将使用相同的值填充现有数组。原语和Objects.

于 2013-01-11T10:48:15.967 回答
6

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

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

于 2013-01-11T10:48:30.233 回答
3

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

于 2013-01-11T10:50:59.510 回答
3

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

int[] array = new int[n];

for (int i = 0; i < n; i++)
{
    array[i] = 5;
}
于 2018-08-28T09:48:12.170 回答
-2

试试这个 ..

 Boolean [] data = new Boolean[20];
  Arrays.fill(data,new Boolean(false));
于 2013-01-11T10:54:59.567 回答