Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Collectors.groupingBy妙用

Collectors.groupingBy妙用

作者头像
赵哥窟
发布于 2022-07-28 05:42:01
发布于 2022-07-28 05:42:01
65300
代码可运行
举报
文章被收录于专栏:日常技术分享日常技术分享
运行总次数:0
代码可运行

Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Data
public class Student {
    private String name;
    private String sex;
    private int age;
    private String className;

    public Student(String name,String sex,int age,String className){
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.className = className;
    }
}

按照性别分组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
        Student student1 = new Student("张三","1",10,"三班");
        Student student2 = new Student("张三","1",11,"三班");
        Student student3 = new Student("李四","0",12,"三班");
        Student student4 = new Student("王二","0",12,"三班");
        Student student5 = new Student("麻子","0",11,"三班");
        List<Student> studentList = Lists.newArrayList(student1, student2, student3, student4, student5);

        Map<Object, List<Student>> newList = studentList.stream().collect(Collectors.groupingBy(student -> student.getSex()));
        log.info(newList.toString());
    }

也可以多个属性分组,按照性别和班级

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
         Student student1 = new Student("张三","1",10,"三班");
        Student student2 = new Student("张三","1",11,"三班");
        Student student3 = new Student("李四","0",12,"三班");
        Student student4 = new Student("王二","0",12,"三班");
        Student student5 = new Student("麻子","0",11,"三班");
        List<Student> studentList = Lists.newArrayList(student1, student2, student3, student4, student5);

        Map<Object, List<Student>> newList = studentList.stream().collect(Collectors.groupingBy(student -> student.getName() + ":" + student.getSex()+ ":" + student.getAge()));
        log.info(newList.toString());

    }

另外一个用法就是判断入参数组里面是否有重复数据 这个时候就可以用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 long distinctCount = studentList.stream().collect(Collectors.groupingBy(student -> student.getName() + ":" + student.getSex()+ ":" + student.getAge()));
  if (paramList.size() != distinctCount) {
            throw new BizException("xxxxxx重复");
  }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java集合浅学-Collection概述(一)
这个系列是我在学习java集合这部分时候,结合书籍和Java提供的api整理的部分知识,也参考了一些网络上的文章,如果错误,望大家指出。希望本系列文章对大家学习java有所帮助,也可以回顾下这部分的基础知识,温故而知新。
云端源想
2023/11/08
1700
java集合浅学-Collection概述(一)
Java8 stream流之分组 groupingBy 的使用
众所周知,使用stream流可以让我们的代码看上去很简洁,现在我们实战使用一下stream的分组与分区。
全栈程序员站长
2022/09/23
4.3K0
List,Map多层循环嵌套Demo及其理解
我这边在之前写代码遇到多层(n*n)层循环嵌套逻辑的时候很头疼今天写一些demo来帮自己更好的理解相关内容
默 语
2024/11/20
1100
List,Map多层循环嵌套Demo及其理解
将List转为Map并key去重
eg:查询出的学生list,将学生根据性别为key,Name为value转为map,由于性别是只有男/女,且map的key不可以重复,哪么我们需要使用Group By对key进行去重。
关忆北.
2021/12/07
1.8K0
将List转为Map并key去重
Java8之list.stream的常见使用
影响性能的五要素:数据大小、源数据结构、值是否装箱、可用的CPU数量以及处理每个元素所花的时间。
执笔记忆的空白
2020/12/24
2.7K0
java8
Day1: ---- 1. Lambda表达式 Lambda表达式的基本结构: (param1,param2,param3,paramN) ->{body} 关于函数式接口: 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口。 如果我们在某个接口上声明了FunctionalInterface注解,那么编译器就会按照函数式接口的定义来要求该接口。 如果某个接口只有一个抽象方法,但我们没有给该接口声明FunctionalInterface注解,那么编译器依旧会将该接口看作是函数式接口。 ps(为什
如来
2020/07/14
8550
感受lambda之美,推荐收藏,需要时查阅
java8最大的特性就是引入Lambda表达式,即函数式编程,可以将行为进行传递。总结就是:使用不可变值与函数,函数对不可变值进行处理,映射成另一个值。
猿天地
2019/07/18
4420
感受lambda之美,推荐收藏,需要时查阅
java8学习整理二
java8不但可以提高代码的运行的性能,而且实现起来很优雅,因此学习它是不错的选择。
路行的亚洲
2020/07/16
3320
关于Java使用groupingBy分组数据乱序问题
这个也不难,在 java8 环境下我们可以使用stream流的groupingBy很容易的实现,于是就有了下面的代码,
用户7634691
2020/08/10
1.4K0
JAVA8 Stream学习
parallelStream提供了流的并行处理,它是Stream的另一重要特性,其底层使用Fork/Join框架实现。简单理解就是多线程异步任务的一种实现。
全栈程序员站长
2022/07/09
2900
用好强大的Stream
众所周知,Java8提供了很多新的特性,Lambda表达式,函数式接口,Optional,新的日期类api。今天简单聊一下Stream的前世今生。
Java识堂
2020/09/03
5590
用好强大的Stream
stream的groupingby_handlemapping
需要注意list转set,set中的值不允许有重复,所以只有一个,,list转map,map的key不能重复,所以自己设置选用老的还是新的,还一点需要注意,list转map时key可以为null,value不可以为null,否则会报空指针异常
全栈程序员站长
2022/09/24
3650
java1.8新特性之stream
Stream字面意思是流,在java中是指一个来自数据源的元素队列并支持聚合操作,存在于java.util包中,又或者说是能应用在一组元素上一次执行的操作序列。(stream是一个由特定类型对象组成的一个支持聚合操作的队列。)注意Java中的Stream并不会存储元素,而是按需计算。关于这个概念需要以下几点解释:1、数据源流的来源。 它可以是列表,集合,数组(java.util.Collection的子类),I/O channel, 产生器generator等(注意Map是不支持的);2、聚合操作。类似于SQL语句一样的操作, 如filter, map, reduce, find, match, sorted等。因此stream流和以前的Collection操作是完全不同, Stream操作还有两个非常基础的特征:Pipelining和内部迭代。
啃饼思录
2020/05/04
9970
最常用的 Java 8 中的 Lambda 函数(项目中实用笔记)
Java 8 中的新特性,虽然现在都出到了Java14版本,不过在日常的开发过程中,8的版本是足够使用了,再说现在的8以上的版本也都面向商业收费了,很多新手,我所接触到的,像我那时候一样,追求船新版本,一上来就去学java14的东西,当成一个爱好还行,重心还是要放在实用上
拾荒者的笔记
2020/07/04
3830
Spring对JDBC的模板支持——JdbcTemplate
Spring的JdbcTemplate是一个对JDBC的模板封装,它提供了一套JDBC的模板,能让我们写持久层代码时减少多余的代码,简化JDBC代码,使代码看起来更简洁。在介绍Spring的JdbcTemplate使用方法之前我们先来讨论一个问题,以下这是一段常见的往数据库写入数据的JDBC代码:
端碗吹水
2020/09/23
6880
Stream 流解读
java.util.Stream 可以对元素列表进行一次或多次操作。Stream操作可以是中间值也可以是最终结果。最后的操作返回的是某种类型结果,而中间操作返回的是stream本身。因此你可以在一行代码链接多个方法调用。Streams被创建于java.util.Collection ,比如 list or set (map 并不支持)。Stream可以顺序执行,也可以并行执行。
微观技术
2020/08/20
7150
java8中的Collectors.groupingBy用法「建议收藏」
Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组
全栈程序员站长
2022/08/02
5K1
java8 stream().map().collect()的Collectors.toList()、Collectors.toMap()、Collectors.groupingBy()的用法[通俗易
  现在需要将这些user的id提取出来。这个很简单,for循环嘛,谁不会啊(不会吧不会吧,不会有人还不会用for循环的吧)。
全栈程序员站长
2022/09/24
2.8K0
java8 stream().map().collect()的Collectors.toList()、Collectors.toMap()、Collectors.groupingBy()的用法[通俗易
Java中lambda表达式详解
上面的代码中,e是一个lambda的对象,根据java的继承的特性,我们可以说e对象的类型是继承自eat接口。而e1是一个正常的匿名类的对象.
付威
2018/12/05
4.7K0
Java中lambda表达式详解
java8新特性中lambda表达式的使用
最近工作中使用到了lambda表达式,不是很理解,就去学习了一下,通过了解发现真的特别好用。就像下面这样,几行代码完成了java8之前很多行才能完成的任务量。下面的代码是基于groovy语言实现的,这次主要通过举例总结一下java8中lambda的新特性,文章最后拿在公司一个业务场景进行实战,给小伙伴提供一个使用lambda表达式迅速解决现实问题的思路。
jiankang666
2022/05/12
6450
相关推荐
java集合浅学-Collection概述(一)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档