使用零初始化arrayList

yay*_*zis 5 java initialization arraylist

我正在创建一个ArrayList它的大小40

ArrayList<Integer> myList= new ArrayList<>(40);
Run Code Online (Sandbox Code Playgroud)

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

for(int i=0; i<40; i++){
   myList.set(i, 0);
}
Run Code Online (Sandbox Code Playgroud)

但我明白了

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
Run Code Online (Sandbox Code Playgroud)

Cod*_*roc 13

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

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

OUTPUT

[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]
Run Code Online (Sandbox Code Playgroud)


小智 9

试试Collections.nCopies():

ArrayList<Integer> myList = new ArrayList<Integer>(Collections.nCopies(40, 0));
Run Code Online (Sandbox Code Playgroud)

要么:

List<Integer> myList = Collections.nCopies(40, 0);
Run Code Online (Sandbox Code Playgroud)

文档

  • 请注意,第二个示例返回一个不可变列表 - 这可能就是为什么它应该包装在 ArrayList 中,如第一个示例所示。 (3认同)