Java8提供的Stream方式进行分组GroupingBy
有时我们需要对集合进行分组操作,这时可以使用Java8提供的Stream方式进行分组。挺好用的,此处记录下。直接贴code:
Road实体:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Road {/**
* 名称
*/
private String name;/**
* 道路长度
*/
private double len;/**
* 社区划分
*/
private String community;
}
Stream分组:
Road road1 = new Road("荷花大道_东段", 100.2, "荷花社区");
Road road2 = new Road("荷花大道西段", 88.2, "荷花社区");
Road road3 = new Road("剑北大道_东段", 99.2, "剑北社区");
Road road4 = new Road("剑北大道西段", 111.4, "剑北社区");
Road road5 = new Road("剑北大道_南段", 68.9, "剑北社区")List<Road> roadList = new ArrayList<>();
roadList.add(road1);
roadList.add(road2);
roadList.add(road3);
roadList.add(road4);
roadList.add(road5);// ①根据 社区属性 分组
// 两种方式皆可
Map<String, List<Road>> roadMap1 = roadList.stream().collect(Collectors.groupingBy(Road::getCommunity));
Map<String, List<Road>> roadMap2 = roadList.stream().collect(Collectors.groupingBy(Road::getCommunity, Collectors.toList()));// ②将 道路长度大于100 的分为一组
Map<String, List<Road>> roadMap3 = roadList.stream().collect(Collectors.groupingBy(x -> {
if (x.getLen() > 100) {
return "大于100";
} else {
return "小于等于100";
}
}));// ③想得到一个通过道路长度分组并有序的结果(此处道路长度都不一样,没必要分组,只是想体现有序的返回)
TreeMap<Double, List<Road>> roadMap4 = roadList.stream().collect(Collectors.groupingBy(Road::getLen, TreeMap::new, Collectors.toList()));// ④将名字中的 大道 替换为'' 并进行分组(主要是这个,平时用的时候,有时会搞忘)
Map<String, List<Road>> roadMap5 = roadList.stream().collect(Collectors.groupingBy(x -> x.getName().replace("_", ""), Collectors.toList()));// 按自己习惯打印输出,roadMap1...roadMap5,进行结果验证比对
代码直接复制即可运行,可进行结果验证比对。
既然选择了远方,便只顾风雨兼程。-- 烟沙九洲
Java8提供的Stream方式进行分组GroupingBy的更多相关文章
- java8学习之Stream分组与分区详解
Stream应用: 继续举例来操练Stream,对于下面这两个集合: 需求是:将这两个集合组合起来,形成对各自人员打招呼的结果,输出的结果如: "Hi zhangsan".&quo ...
- 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...
- 这可能是史上最好的 Java8 新特性 Stream 流教程
本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...
- Java8新特性 - Stream API
Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找.过滤和映射数据等操作.使用Stream API对集合进行操作,就类似与使用SQL执行的数据库 ...
- 【Java8新特性】面试官:谈谈Java8中的Stream API有哪些终止操作?
写在前面 如果你出去面试,面试官问了你关于Java8 Stream API的一些问题,比如:Java8中创建Stream流有哪几种方式?(可以参见:<[Java8新特性]面试官问我:Java8中 ...
- Java8 如何进行stream reduce,collection操作
Java8 如何进行stream reduce,collection操作 2014-07-16 16:42 佚名 oschina 字号:T | T 在java8 JDK包含许多聚合操作(如平均值,总和 ...
- Java8 新特性 Stream() API
新特性里面为什么要加入流Steam() 集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合.集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操 ...
- java集合(3)-Java8新增的Stream操作集合
Java8新增了Stream,IntStream,LongStream,DoubleStream等流式API,这些API代表多个支持串行和并行聚集操作的元素.上面的4个接口中,Stream是一个通用的 ...
- Java8中的Stream流式操作 - 入门篇
作者:汤圆 个人博客:javalover.cc 前言 之前总是朋友朋友的叫,感觉有套近乎的嫌疑,所以后面还是给大家改个称呼吧 因为大家是来看东西的,所以暂且叫做官人吧(灵感来自于民间流传的四大名著之一 ...
- MySQL JDBC/MyBatis Stream方式读取SELECT超大结果集
情景: 遍历并处理一个大表中的所有数据, 这个表中的数据可能会是千万条或者上亿条, 很多人可能会说用分页limit……但需求本身一次性遍历更加方便, 且Oracle/DB2都有方便的游标机制. 对DB ...
随机推荐
- Cookie——基本使用
Cookie 基本使用 Cookie 原理 Cookie 使用细节 Cookie jsp中获取Cookie
- A Proof of Golden Section of Fibonacci Sequence
Update on 2024/6/25 10:40 (UTF+8) : Add the Part Five and correct some words Hello, I'm glad to show ...
- 北京智和信通亮相2023IT运维大会,共话数智浪潮下自动化运维新生态
2023年9月21日,由IT运维网.<网络安全和信息化>杂志社联合主办的"2023(第十四届)IT运维大会"在北京成功举办.大会以"以数为基 智引未来&quo ...
- JIT编译选项
JIT(Just-In-Time)优化在编译过程中有多种编译选项可以支持,不同语言和平台可能有不同的实现.以通用的 JIT 编译器为例,以下是一些常见的编译选项: 编译级别(Compilation L ...
- 80篇国产数据库实操文档汇总(含TiDB、达梦、openGauss等)
国产数据库发展得如火如荼,数据库的国产化替代也正在进行中.最近,有越来越多的朋友都加入了学习国产数据库的队伍中,本文便选取了墨天轮技术社区的国产数据库流行度排行榜上排名靠前的几个数据库,整理了相关的实 ...
- iOS中MJExtension使用详解
iOS开发中MVC模式最为常见,M代表模型,字典转成模型数据可以简化很多操作,下面我们说一下具体用法. 1.将字典转换成模型对象,模型中的属性名和responseObject字典中的字段名一致,我们得 ...
- rabbitmq 新下载链接🔗
Linux下安装RabbitMQ需要依赖socat和erlang插件环境 1 插件下载 1.1 RabbitMQ下载 下载地址一:https://www.rabbitmq.com/download. ...
- KubeSphere 社区双周报 | FluentBit 新增 tcp 输入插件 | 2023.09.29-10.12
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- Fluent Operator:云原生日志管理的一把瑞士军刀
作者:程德昊,Fluent Member,KubeSphere Member Fluent Operator 介绍 随着云原生技术的快速发展,技术的不断迭代,对于日志的采集.处理及转发提出了更高的要 ...
- Bitmap 和 布隆过滤器傻傻分不清?你这不应该啊
大家好,我是小富- 有个兄弟私下跟我说,他在面试狗东时,有一道面试题没回答上来:Redis 的Bitmap和布隆过滤器啥区别与关系? 其实就是考小老弟对这两种工具的底层数据结构是否了解,不算太难的题. ...