我正在创建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
答案 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());