【发布时间】:2015-01-22 03:15:12
【问题描述】:
假设我想创建 n 个项目。在 Java 8 之前,我会写:
List<MyClass> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
list.add(new MyClass());
}
有没有一种优雅的方式来使用流创建 n 个项目?
我想到了这个:
List<MyClass> list = Stream.iterate(0, i -> i).limit(10)
.map(o -> new MyClass()).collect(Collectors.toList());
是否有标准/更好的编码方式?
请注意,实际的用法有点复杂,使用流会更灵活,因为我可以在一行中立即通过其他函数泵送项目,甚至无需创建对列表的引用,例如对它们进行分组:
Stream.iterate(0, i -> i).limit(10).map(o -> new MyClass())
.collect(Collectors.groupingBy(...));
【问题讨论】:
-
您认为流将更具表现力/高效/有用?出于好奇?
-
您可以使用
IntStream#range(0, N)和mapToObject。
标签: loops java-8 java-stream