如何创建具有特定大小的元素的列表

use*_*414 5 java collections performance arraylist

说,我想快速创建一个包含1000个元素的列表.完成此任务的最佳方法是什么?

aio*_*obe 17

你可以用Collections.nCopies.

但请注意,返回的列表是不可变的.事实上,文档说" 新分配的数据对象很小(它包含对数据对象的单个引用) ".

如果你需要一个可变列表,你会做类似的事情

List<String> hellos = new ArrayList<String>(Collections.nCopies(1000, "Hello"));
Run Code Online (Sandbox Code Playgroud)

如果您想要1000个不同的对象,则可以使用

List<YourObject> objects = Stream.generate(YourObject::new)
                                 .limit(1000)
                                 .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

同样,不保证结果列表实现的功能.如果你需要,比如说ArrayList,你会这样做

                                 ...
                                 .collect(ArrayList::new);
Run Code Online (Sandbox Code Playgroud)