玩转 Java 8 的 Stream 和 Collectors 工具类

本文详细介绍Java8中的Stream API及其常用操作方法,包括流的创建、遍历、映射、过滤等,并介绍了Collector工具库的使用方法,如分组、拼接、聚合等,帮助读者更好地理解和运用Stream进行高效编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)组合可实现分页(该方式对数据库的压力没有减轻,只是对集合做了截取)。
 
 

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

在这里插入图片描述

 
 
 
 
 
 
 
 
 
 
 
 
 
.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值