如何选择流中的元素:用谓词筛选,筛选出各不相同的元素,忽略流中的头几个元素,或将流截短至指定长度。

1、用谓词筛选

Streams接口支持filter方法(你现在应该很熟悉了),该操作会接受一个谓词(一个返回boolean的函数)作为参数,并返回一个包括所有符合谓词的元素的流。
例如,像下图所示的这样,筛选出所有素菜:
![}@K4~LR$BR~8A7P}X$VX{P.png

2、筛选各异的元素

流还支持一个叫作distinct的方法,它会返回一个元素各异(根据流所生成元素的hashCode和equals方法实现)的流。
例如,以下代码会筛选出列表中所有的偶数,并确保没有重复。
JLRFFRXC31I__(XF9W3SY6F.png

3、截短流

流支持limit(n)方法,该方法会返回一个不超过给定长度的流。
所需的长度作为参数传递给limit。
如果流是有序的,则最多会返回前n个元素。
比如,你可以建立一个List,选出热量超过300卡路里的头三道菜:
![1Y[JVX)J7F4_J]SZ2FYCHP.png
请注意limit也可以用在无序流上,比如源是一个set。这种情况下,limit 的结果不会以任何顺序排列。

4、跳过元素

流还支持skip(n)方法,返回一个扔掉了前n个元素的流。
如果流中元素不足n个,则返回一个空流。
例如,下面的代码将跳过超过300卡路里的头两道菜,并返回剩下的。
@1%70LV6~DZ[NKTCZ@U]_]1.png