jdk1.8之流式表达式

List.stream()转换成流,然后进行流的各种操作,分为中间操作和终结操作。中间操作是指返回值还是stream,还需要继续处理。终结操作是指不再往下进行流式表达式了。具体如下:

中间操作:

1.filter()过滤:list.stream().filter(u->u.xxx条件)。其中,filter参数的u代表list集合中的每个元素。->后面的是元素的某个属性满足什么条件。进行元素的过滤。该方法的返回值还是stream()流。需要跟一个终结操作方法。

2.distinct()方法:无需参数,对集合中的元素进行去重操作。

3.sorted()方法:对元素进行排序操作。没有参数时,自然排序,有参数时,用comparator接口定义排序规则即可。

4.limit()方法:取集合的长度。

5.map()方法:该方法会接受一个函数作为参数,这个函数会被应用到每个元素上,并将其映射成一个新的元素。就是根据指定函数获取流中得每个元素得数据并重新组合成一个新的元素。运行函数后,将函数的运行结构组成新的集合返回。

由此可知,中间操作类似于sql语句,去处理集合中的数据。

6.collect()方法:收集流的操作,最终生产一个list,map或set。参数中调Collections.toList()即可返回流处理后的新的list.

终结操作:

Collectors中有一些分组,求最大值,最小值,平均值的方法,放入collect()参数中,返回相应结果。也是类似于sql操作。所以有这个概念就行,集合中的元素,也可以进行类似sql的过滤,求和,分组等操作。

原文地址:https://www.cnblogs.com/hongyuansu/p/13855285.html