使用一系列整数值初始化 ArrayList 避免循环

scd*_*scd 2 java arraylist

我想用一系列整数值初始化一个 ArrayList。这是我想要避免的:

ArrayList<Integer> numbers = new ArrayList<>();
for(int i = 0; i < x; i++){
    numbers.add(i);
}
Run Code Online (Sandbox Code Playgroud)

我找到了 IntStream 的 rangeClosed 函数:

IntStream.rangeClosed(0, instance.getNumVertices()-1);
Run Code Online (Sandbox Code Playgroud)

但我认为转换为 ArrayList 不值得。

我在追求效率...

Ser*_*nin 6

ArrayList是由数组支持。如果你想用升序填充它,你不会比迭代这些值并将它们添加到列表中更快。

我在你的例子中唯一改变的是用已知的大小初始化数组,这样它就不会在底层数组的扩展上花费时间和内存:

ArrayList<Integer> numbers = new ArrayList<>(x);
for(int i = 0; i < x; i++){
    numbers.add(i);
}
Run Code Online (Sandbox Code Playgroud)