截短流和去重流
distinct() 根据流锁生成圆度的hashcode和equals方法
limit()返回一个不超过给定长度的流,(流如果是有序的,则返回前几个元素)
1 截短流
流支持limit(n)方法,该方法会返回一个不超过给定长度的流。所需的长度作为参数传递给limit。如果流是有序的,则最多会返回前n个元素。
//选出热量超过300卡的三道菜
List<Dish> dishes = menu.stream()
.filter(d -> d.getCalories() > 300)
.limit(3)
.collect(toList());
该方法选出符合谓词的头三个元素。
注:请注意limit也可以用在无序流上,比如源是一个Set。这种情况下,limit的结果不会以任何顺序排列。
2 跳过元素
skip(n) 返回一个跳过前n个元素的流,如果流中的元素不足n个,则返回一个空流。
limit(n) 与skip(n)是互补的
List<Dish> dishes = menu.stream()
.filter(d -> d.getCalories() > 300)
.skip(2)
.collect(toList());