使用零初始化arrayList

时间:2015-09-02 10:35:53

标签: java arraylist initialization

我正在创建ArrayList,其大小为40

ArrayList<Integer> myList= new ArrayList<>(40);

如何使用零myList初始化0?我试过这个

for(int i=0; i<40; i++){
   myList.set(i, 0);
}

但我得到

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

5 个答案:

答案 0 :(得分:13)

您可以使用Collections.fill(List<? super T> list,T obj)方法用零填充列表。在您的情况下,您在此设置new ArrayList<>(40) 40不是列表的长度,而是初始容量。您可以使用数组来构建包含全零的列表。签出一段代码。

Integer [] arr = new Integer[40];
ArrayList<Integer> myList= new ArrayList<>(Arrays.asList(arr));
Collections.fill(myList, 0);//fills all 40 entries with 0
System.out.println(myList);

<强>输出

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

答案 1 :(得分:9)

尝试Collections.nCopies()

ArrayList<Integer> myList = new ArrayList<Integer>(Collections.nCopies(40, 0));

OR:

List<Integer> myList = Collections.nCopies(40, 0);

请参阅doc

答案 2 :(得分:3)

请改用.add(0)ArrayList(int capacity)构造函数设置初始容量,但不设置初始项。所以你的清单仍然是空的。

答案 3 :(得分:0)

在那里,您可以设置添加myList.add会奏效。只有在该特定索引上已有条目时才能设置。 set 方法仅替换该索引中的内容 Check api documentation for set method here

答案 4 :(得分:0)

Java 8实现:

ArrayList<Integer> list = IntStream.of(new int[40])
                    .boxed()
                    .collect(Collectors.toList());