Why doesn't Stream.limit work as expected in this snippet?

前端 未结 4 964
不知归路
不知归路 2021-01-07 16:14
List integer = Stream.generate(new Supplier() {
    int i = 0 ;

    @Override
    public Integer get() {
        return ++i;
    }
}).         


        
4条回答
  •  猫巷女王i
    2021-01-07 17:05

    If you want to stop either if number 5 is reached or 10 elements are collected, there's Stream.takeWhile() method added in Java-9:

    List integer = Stream.generate(new Supplier() {
        int i = 0 ;
    
        @Override
        public Integer get() {
            return ++i;
        }
    }).takeWhile(j -> j < 5).limit(10).collect(Collectors.toList());
    

提交回复
热议问题