首页 > 编程语言 >java stream 多重groupingBy

java stream 多重groupingBy

时间:2023-04-25 22:00:09浏览次数:28  
标签:java String stream list groupingBy User import

import com.alibaba.fastjson.JSON;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @ClassName Test
 * @Description
 * @Author csg
 * @Data 2023/4/25 21:31
 * @Version 1.0
 */
public class Test {

    public static void main(String[] args) {
        User user1 = new User("zhangsan", "beijing", "男", 10);
        User user2 = new User("zhangsan", "beijing", "女", 20);
        User user3 = new User("lisi", "shanghai", "男", 30);
        List<User> list = new ArrayList<>();
        list.add(user1);
        list.add(user2);
        list.add(user3);
        //先按照名称分组,再按照地址分组,最后按照性别分组
        Map<String, Map<String, Map<String, List<User>>>> collect = list.stream().collect(
                Collectors.groupingBy(User::getSex,
                        Collectors.groupingBy(
                                User::getAddress,
                                Collectors.groupingBy(User::getName)
                        )
                )
        );
        System.out.println(JSON.toJSONString(collect));
    }


}

@Data
class User {
    private String name;
    private String address;
    private String sex;
    private int age;

    public User(String name, String address, String sex, int age) {
        this.name = name;
        this.address = address;
        this.sex = sex;
        this.age = age;
    }
}

 

标签:java,String,stream,list,groupingBy,User,import
From: https://www.cnblogs.com/csgbpd/p/17354054.html

相关文章

  • Java静态代理总结
    总结:真实对象和代理对象都要实现同一个接口代理对象要代理真实角色优点:代理对象可以补充真实对象所要做的事情真实对象只需要关注自己做的事情代码示例:执行结果:......
  • Java 编程问题:三、使用日期和时间
    本章包括20个涉及日期和时间的问题。这些问题通过Date、Calendar、LocalDate、LocalTime、LocalDateTime、ZoneDateTime、OffsetDateTime、OffsetTime、Instant等涵盖了广泛的主题(转换、格式化、加减、定义时段/持续时间、计算等)。到本章结束时,您将在确定日期和时间方面没有问题,......
  • Java endorsed
    endorsed目录下放置的jar会覆盖JDK。endorsed目录可以通过以下代码获得:System.out.println(System.getProperty("java.endorsed.dirs"))可以通过-Djava.endorsed.dirs指定的目录面放置的jar文件,将有覆盖系统API的功能。可以牵强的理解为,将自己修改后的API打入到虚拟机指定的启动A......
  • 面试官:Java 中有几种基本数据类型是什么?各自占用多少字节?
    认识基本数据类型在学习基本数据类型之前,我们先认识一下这两个单词:1、bit--位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。2、byte--字节:字节是计算机存储容量的基本单位,一个字节由8位二进制数组成。在计算机内部,一个字节可以表示一个数据,也可以表......
  • 面试官:Java装箱与拆箱的区别?
    关注“Java后端技术全栈”回复“000”获取大量电子书认识装箱和拆箱装箱就是自动将基本数据类型转换为包装器类型(int-->Integer);调用方法:Integer的valueOf(int)方法。拆箱就是自动将包装器类型转换为基本数据类型(Integer-->int);调用方法:Integer的intValue方法。在JavaSE5之前,如果要......
  • Java学习笔记(五)
    一、面向对象程序设计思想找一个对象帮助我们做事情(万物皆为对象),用虚拟思想去模拟现实生活。二、类和对象的概念是事物相关属性和行为的集合,可以看成是一类事物的模板,使用事物的属性特征来描述该类事物。是一类事物的具体体现,对象就是类的一个具体实例,对象具备该类事物的......
  • java中的容器
    java中的容器(1)List接口:java.util.List<>实现:java.util.ArrayList<>:变长数组java.util.LinkedList<>:双链表函数:add():在末尾添加一个元素clear():清空size():返回长度isEmpty():是否为空get(i):获取第i个元素set(i,val):将第i个元素设置为val代码:List<Integer>li......
  • JavaWeb回顾与小结(三)
    请求与响应概述架构BS架构:Browser/Server,浏览器/服务器架构模式.客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端维护方便,体验一般CS架构:Client/Server,客户端/服务器架构模式开发,维护麻烦,体验不错请求(HttpServletRequest):获取请求数据响应(HttpServletRes......
  • 打卡3(Java)
    image.pnimportjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);Stringa=sc.next(),b=sc.next(),c=sc.next();Stringres;if("vertebrado".equals(a......
  • Java中为什么重写equals()也需要重写hashCode()?
    所有类默认继承Object类先看一下Object源码packagejava.lang;publicclassObject{ //默认调用本地的hashcode()方法根据内存地址生成hash值避免不了哈希冲突 publicnativeinthashCode(); //默认调用的equals方法比较的是'=='比较 //基本类型比较的是两者的值是否......