Java8新特性Stream使用心得之:groupingBy与partitioningBy

本文介绍了Java8 Stream的新特性,探讨了为什么需要Stream以及Stream的基本概念。重点讲解了groupingBy和partitioningBy的区别与用法,通过实例展示了如何使用这两个方法进行数据分组和分区,并提醒了在使用过程中需要注意的坑,如分组时key不存在的情况和处理效率问题。
摘要由CSDN通过智能技术生成

业务开发过程中,经常会需要将集合中的数据进行聚合操作。比如:取出订单集合中有效订单的数据、按照订单类型做分组等等。以前的处理方式会遍历这个集合然后通过业务判断做处理,虽然可用,但远不够高效且笨拙。

为什么需要Stream

Stream是Java8的一大亮点,是对集合对象(Collection)功能的增强,进行聚合操作、批量数据操作。同时借助于Lambda表达式,提高编程效率和可读性。此外,Stream提供了并发模式,可充分使用多核处理器的优势,底层使用fork/join 并行方式来拆分任务和加速处理过程。

什么是Stream流

Stream不保存数据,也不是一种数据结构,更不是集合元素,而是有关算法和计算的,就像Iterator,只是更高级。Stream会隐式的在内部进行遍历,做出对应的数据转换。Stream类比于迭代器(Iterator)去理解,是单向、不可往复、只能遍历一次。
但是,迭代器只能串行化操作,也就是说用迭代器去遍历时,每个item 读完后再读下一个 item。Stream的并行操作依赖于Java7引入的Fork/Join 框架(JSR166y)来拆分任务和加速处理。
list.stream():串行遍历;
list.parallelStream():并行处理;

Stream之groupingBy

groupingBy是都集合进行分组,分组之后的结果形如Map<key,List>。其中,key是进行分组的字段

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值