为什么在这段代码中Stream.limit不能按预期工作?

19 浏览
0 Comments

为什么在这段代码中Stream.limit不能按预期工作?

List integer = Stream.generate(new Supplier() {
    int i = 0 ;
    @Override
    public Integer get() {
        return ++i;
    }
}).filter(j -> j < 5)
  .limit(10)   // 注意这里调用了limit方法
  .collect(Collectors.toList());

与我的预期相反,collect方法从未返回。在filter之前设置limit会产生预期的结果。为什么?

0