假设我想创建 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());
是否有标准/更好的编码方法?
请注意,actual用法有点复杂,使用流会更灵活,因为我可以立即通过一行中的其他函数泵送项目,甚至无需创建对列表的引用,例如对它们进行分组:
Stream.iterate(0, i -> i).limit(10).map(o -> new MyClass())
.collect(Collectors.groupingBy(...));
你可以使用Stream#generate http://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#generate-java.util.function.Supplier- with limit http://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#limit-long-:
Stream.generate(MyClass::new).limit(10);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)