看起来它arraylist没有做它的预置工作:
arraylist
// presizing ArrayList<Integer> list = new ArrayList<Integer>(60);
之后当我尝试访问它时:
list.get(5)
它不是返回 0 而是抛出 IndexOutOfBoundsException: Index 5 out of bounds for length 0 。
有没有办法像 C++ 那样将所有元素初始化为精确大小的 0?
传递给构造函数的整数表示其 初始容量 ,即在需要调整其内部数组大小之前它可以容纳的元素数(与列表中的初始元素数无关)。
要使用 60 个零初始化列表,请执行以下操作:
List<Integer> list = new ArrayList<Integer>(Collections.nCopies(60, 0));
如果你想创建一个包含 60 个 不同 对象的列表,你可以使用 Stream APISupplier如下:
Supplier
List<Person> persons = Stream.generate(Person::new) .limit(60) .collect(Collectors.toList());