我想用一系列整数值初始化一个 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 不值得。
我在追求效率...
的ArrayList是由数组支持。如果你想用升序填充它,你不会比迭代这些值并将它们添加到列表中更快。
我在你的例子中唯一改变的是用已知的大小初始化数组,这样它就不会在底层数组的扩展上花费时间和内存:
ArrayList<Integer> numbers = new ArrayList<>(x);
for(int i = 0; i < x; i++){
numbers.add(i);
}
Run Code Online (Sandbox Code Playgroud)