Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java8 新特性 list集合利用stream根据对象得某一属性对集合进行分组,附加8之前分组

Java8 新特性 list集合利用stream根据对象得某一属性对集合进行分组,附加8之前分组

作者头像
掉发的小王
发布于 2022-07-11 07:20:09
发布于 2022-07-11 07:20:09
2K00
代码可运行
举报
文章被收录于专栏:小王知识分享小王知识分享
运行总次数:0
代码可运行

Java8之后很多新特性,接下来主要讲一下, list集合利用stream根据对象得某一属性对集合进行分组! 话不多说,上代码: 首先准备实体类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {

    private Integer id;

    private String name;
	//成绩
    private Double score;
    
}

然后开始写测试类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import java.util.*;
import java.util.stream.Collectors;

public class GroupByName {

    public static void main(String[] args) {
        //准备要分组得集合
        List<Student> students = Arrays.asList(
            new Student(1,"伽罗",99d),
            new Student(2,"后羿",97d),
            new Student(3,"鲁班",98d),
            new Student(4,"后羿",90d),
            new Student(5,"百里",88d),
            new Student(6,"狼狗",59d),
            new Student(7,"艾琳",78d),
            new Student(8,"伽罗",94d)
        );

        //jdk8.0新特性来分组,根据学生姓名来进行分组
        Map<String,List<Student>> result = new HashMap<>();
        result = students.stream().collect(Collectors.groupingBy(Student::getName));
        result.forEach((x,y) -> System.out.println(x+"--"+y));

        System.out.println("华丽分割线"+"------------------------");
        //jdk1.8之前手写分组
        Map<String,List<Student>> map = new HashMap<>();
        for (Student student : students) {
            List<Student> list = map.get(student.getName());
            if (list == null) {
                list = new ArrayList<>();
                list.add(student);
                map.put(student.getName(), list);
            } else {
                list.add(student);
            }
        }
        map.forEach((x,y) -> System.out.println(x+"--"+y));

        /**
         * 结果:
         * 伽罗--[Student(id=1, name=伽罗, score=99.0), Student(id=8, name=伽罗, score=94.0)]
         * 百里--[Student(id=5, name=百里, score=88.0)]
         * 狼狗--[Student(id=6, name=狼狗, score=59.0)]
         * 艾琳--[Student(id=7, name=艾琳, score=78.0)]
         * 后羿--[Student(id=2, name=后羿, score=97.0), Student(id=4, name=后羿, score=90.0)]
         * 鲁班--[Student(id=3, name=鲁班, score=98.0)]
         */

    }
}

到这里新特性分组就介绍完了,列子简单,直接上手简单,谢谢大家支持!!

Q.E.D.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
9张图,32个案例带你轻松玩转Java stream
Java8 中增加了 Stream 处理,可以配合 Lambda 表达式来使用,让操作集合非常便利。虽然我们平时经常使用 Stream,但用到的方法其实非常少,这篇文章就来完整的介绍 Stream 的使用。
jinjunzhu
2022/09/23
6720
9张图,32个案例带你轻松玩转Java stream
Java8 Stream,常用方法大合集
一、概述 二、分类 三、具体用法 1.流的常用创建方法 2.流的中间操作 3.流的终止操作
鱼找水需要时间
2023/02/16
4540
Java8 Stream,常用方法大合集
Java8新特性----Stream
map–接收Lambda,将元素转换为其他形式或提取信息,接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素
大忽悠爱学习
2021/11/15
5300
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
1K0
感受lambda之美,推荐收藏,需要时查阅
java8最大的特性就是引入Lambda表达式,即函数式编程,可以将行为进行传递。总结就是:使用不可变值与函数,函数对不可变值进行处理,映射成另一个值。
猿天地
2019/07/18
4520
感受lambda之美,推荐收藏,需要时查阅
Java8学习之Stream(流)
本文讲述.stream()的内容,需要一些Lambda表达式的基础,之前也推送过关于Lambda表达式和Stream的相关内容,就看哪盘菜味道更好!
用户5927304
2019/07/31
1.1K0
Java8中的新特性—流式编程
首先,在学习流式编程前,首先应当知道同样为Java8中新特性的lambda表达式,相信编程基础还不错的同学在python或其他语言中也了解过,这里我只贴出一篇学习博客: https://www.cnblogs.com/haixiang/p/11029639.html 里面的内容介绍了如何通过lambda对接口的实现来书写优美的代码。
崔笑颜
2020/06/08
1.2K0
JAVA8新特性
Lambda 表达式 − Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
用户10787181
2023/10/17
2510
JAVA8新特性
Java8 Stream 真香,赶紧来舔一舔
如今Java14已经发布许久了,Java15也在路上跑着了,然鹅不少小伙伴Java8的API应该还没用溜吧!今天跟各位小伙伴们聊聊Java Stream API的具体使用方法以及应用场景。
小柒2012
2020/04/23
4510
Java8 Stream 真香,赶紧来舔一舔
【Java基础-1】 Java8新特性Stream详解
Java8的API中添加了一个新的特性: 流,即stream。stream是将数组或者集合的元素视为流,流在管道中流动过程中,对数据进行筛选、排序和其他操作。
云深i不知处
2020/09/16
1.2K0
Java8新特性
这样一来每次都要写上具体的实现方法 a+b,如果需求变更,则每一处实现都需要更改,基于这种情况,可以将后续的是实现更改为已定义的 方法,需要时直接调用就行
shaoshaossm
2022/12/27
6610
Java8新特性
java8 groupingby_Java8stream中利用groupingBy进行多字段分组求和
Arrays.asList(“apple”, “apple”, “banana”,
全栈程序员站长
2022/09/23
1.8K0
感受 Java Lambda 之美,推荐收藏,需要时查阅
来源:juejin.im/post/5ce66801e51d455d850d3a4a
芋道源码
2019/11/18
6940
巧用Java8中的Stream,让集合操作飞起来!
java8也出来好久了,接口默认方法,lambda表达式,函数式接口,Date API等特性还是有必要去了解一下。比如在项目中经常用到集合,遍历集合可以试下lambda表达式,经常还要对集合进行过滤和排序,Stream就派上用场了。用习惯了,不得不说真的很好用。
I Teach You 我教你
2023/07/18
2630
巧用Java8中的Stream,让集合操作飞起来!
Java8之list.stream的常见使用
影响性能的五要素:数据大小、源数据结构、值是否装箱、可用的CPU数量以及处理每个元素所花的时间。
执笔记忆的空白
2020/12/24
2.7K0
Java8 stream流之分组 groupingBy 的使用
众所周知,使用stream流可以让我们的代码看上去很简洁,现在我们实战使用一下stream的分组与分区。
全栈程序员站长
2022/09/23
4.4K0
Java开发之Java8 新特性--流式数据处理学习
在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式处理可以在一行中实现。比如我们希望对一个包含整数的集合中筛选出所有的偶数,并将其封装成为一个新的List返回,那么在java8之前,我们需要通过如下代码实现:
用户1289394
2018/12/06
1.8K0
Java 8 Stream 从入门到进阶——像SQL一样玩转集合
所以有没有这样一种方式可以让我们不再使用一遍又一遍的循环去处理集合,而是能够便捷地操作集合?
翊君
2022/03/08
6770
Java 8 Stream 从入门到进阶——像SQL一样玩转集合
Java8 中的 Stream,怎么用?
来 源:juejin.im/post/5d5e2616f265da03b638b28a
JavaFish
2019/11/15
1.4K0
Stream流用于按照对象中某一属性来对集合去重+简单数据类型集合的去重
上次对Stream流来进行分组的文章很多人看,想看的可以来这: Stream流来进行集合分组 这次小编又带来Stream的去重,话不多数,直接上代码:
掉发的小王
2022/07/11
1.7K0
相关推荐
9张图,32个案例带你轻松玩转Java stream
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验