50 Stream对集合操作

Stream 的原理:将要处理的元素看做一种流,流在管道中传输,并且可以在管道的节点上处理,包括过滤筛选、去重、排序、聚合等。元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结果。
集合有两种方式生成流:

stream() − 为集合创建串行流
parallelStream() - 为集合创建并行流
在这里插入图片描述
上图中是 Stream 类的类结构图,里面包含了大部分的中间和终止操作。

中间操作主要有以下方法(此类型方法返回的都是 Stream):map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、 limit、 skip、 parallel、 sequential、 unordered
终止操作主要有以下方法:forEach、 forEachOrdered、 toArray、 reduce、 collect、 min、 max、 count、 anyMatch、 allMatch、 noneMatch、 findFirst、 findAny、 iterator

举例说明

在这里插入图片描述
在这里插入图片描述
filter(筛选)
private static List testFilter(List students){
return students stream().filter(s ->“浙江”.equals(s.getAddress())).collect(Collectors.toList());}

map(转换)
map 就是将对应的元素按照给定的方法进行转换。
在这里插入图片描述
distinct(去重)
在这里插入图片描述

引用对象的去重,引用对象要实现hashCode和equal方法,否则去重无效

sorted(排序)
在这里插入图片描述
limit(限制返回个数)
在这里插入图片描述
skip(删除元素)
集合skip,删除前n个元素
在这里插入图片描述
reduce(聚合)
集合reduce,将集合中每个元素聚合成一条数据
在这里插入图片描述
运行结果:北京欢迎你
min(求最小值)
Student minS =students stream().min((stu1,stu2)->Integer.compare(stu1.getAge(),stu2.getAge())).get();
anyMatch/allMatch/noneMatch(匹配)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值