玩转 Java 8 的 Stream 和 Collectors 工具类

1、Java 8 的流式编程

  • 流(Stream) 是一系列与特定存储机制无关的元素,实际上流并没有"存储"之说。利用流,我们无需迭代集合中的元素,就可以提取和操作它们
     
  • 操作流(Stream)的一个核心好处就是,它使得程序更加短小并且更易于理解。尤其是当Lambda表达式和流一起使用的时候,会让人感觉自成一体,可读性更高。
     

2、创建流的几种方法

  • 通过 Stream.of() 将一组元素转化成为流。
    在这里插入图片描述

  • 通过 Stream.iterate() 创建流。
    在这里插入图片描述

  • Java8 中,集合接口有以下几个方法生成流 :

    • stream() : 为集合创建串行流。
      在这里插入图片描述
    • parallelStream() : 为集合创建并行流。
      在这里插入图片描述

3、操作流的详细方法

方法 说明
forEach() 迭代流中的每个数据。
map() 映射每个元素到对应的结果。
filter() 通过设置的条件过滤出元素。
limit(n) 获取指定数量的流,有顺序关系。
sorted() 对流进行排序。
distinct() 通过流中元素的 hashCode() 和 equals() 去除重复元素。
skip(n) 跳过n元素,有顺序关系。
max() 寻找流中最大的元素。
min() 寻找流中最小的元素。
count() 返回流中元素的总个数。
findFirst() 返回流中第一个元素。
findAny() 返回流中的任意元素。
allMatch() Stream 中全部元素符合传入的 predicate,返回 true
anyMatch() Stream 中只要有一个元素符合传入的 predicate,返回 true
noneMatch() Stream 中没有一个元素符合传入的 predicate,返回 true
collect() 将流转为集合。

 
注: 使用skip(n)和limit(n)组合可实现分页(该方式对数据库的压力没有减轻,只是对集合做了截取)。
 
 

扫描二维码关注公众号,回复: 13142014 查看本文章

3.1、遍历:forEach()

在这里插入图片描述

3.2、映射:map()

在这里插入图片描述

3.3、过滤:filter()

在这里插入图片描述

3.4、分片去重:limit、skip、distinct

在这里插入图片描述

3.5、排序:sorted()

  • 自然排序
    在这里插入图片描述
  • 定制排序:sorted(Comparator com),自定义Comparator排序器。
    在这里插入图片描述
    在这里插入图片描述

3.6、最大 / 最小 / 总数:max / min / count

在这里插入图片描述

3.7、取第一个 / 任意一个:findFirst / findAny

在这里插入图片描述

3.8、匹配:allMatch / noneMatch / anyMatch

在这里插入图片描述
 

4、Collector 工具库:Collectors

4.1、分组:groupingBy

在这里插入图片描述
在这里插入图片描述

4.2、拼接:joining

在这里插入图片描述

4.3、聚合:max \ min \ sum \ avg \ count

在这里插入图片描述

4.4、分区:partitioningBy

在这里插入图片描述

4.5、规约:reducing

在这里插入图片描述

 
 
 
 
 
 
 
 
 
 
 
 
 
.

猜你喜欢

转载自blog.csdn.net/weixin_41922349/article/details/113243972