【发布时间】:2015-12-09 07:25:53
【问题描述】:
List<Integer> integer = Stream.generate(new Supplier<Integer>() {
int i = 0 ;
@Override
public Integer get() {
return ++i;
}
}).filter(j -> j < 5)
.limit(10) // Note the call to limit here
.collect(Collectors.toList());
出乎我的意料,collect 调用永远不会返回。在filter 之前设置limit 会产生预期的结果。为什么?
【问题讨论】:
-
顺便说一下,您可以使用
Stream.iterate(1, i -> i + 1).filter(...)...而不是这个时髦的供应商。 -
@AlexisC。我不知道这个 API。谢谢!
-
或者更好,IntStream.range()。
标签: java java-8 java-stream