小编典典

如何在 Java 中用全零初始化 ArrayList?

all

看起来它arraylist没有做它的预置工作:

// presizing

ArrayList<Integer> list = new ArrayList<Integer>(60);

之后当我尝试访问它时:

list.get(5)

它不是返回 0 而是抛出 IndexOutOfBoundsException: Index 5 out of bounds for length 0

有没有办法像 C++ 那样将所有元素初始化为精确大小的 0?


阅读 65

收藏
2022-07-13

共1个答案

小编典典

传递给构造函数的整数表示其 初始容量 ,即在需要调整其内部数组大小之前它可以容纳的元素数(与列表中的初始元素数无关)。

要使用 60 个零初始化列表,请执行以下操作:

List<Integer> list = new ArrayList<Integer>(Collections.nCopies(60, 0));

如果你想创建一个包含 60 个 不同 对象的列表,你可以使用 Stream APISupplier如下:

List<Person> persons = Stream.generate(Person::new)
                             .limit(60)
                             .collect(Collectors.toList());
2022-07-13