首页 > 其他分享 >List<T>集合转Map<String, List<T>>

List<T>集合转Map<String, List<T>>

时间:2022-11-01 12:32:16浏览次数:41  
标签:Map String List list sex Student new teacherId import


 没描述,直接看结果吧。

package com.anchnet.sync;

import cn.hutool.json.JSONUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;

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

/**
* @author H.Yang
* @date 2021/11/19
*/
@Slf4j
public class AppDemo {

public static void main(String[] args) {
List<Student> list = new LinkedList<>();

list.add(new Student("A1", "男", 10001));
list.add(new Student("A2", "女", 10002));
list.add(new Student("A3", "男", 10002));
list.add(new Student("A4", "女", 10001));
list.add(new Student("A5", "男", 10003));

// 核心代码
Map<Integer, List<Student>> map = list.stream().collect(Collectors.groupingBy(item -> item.getTeacherId(), Collectors.mapping(item -> item, Collectors.toList())));

System.out.println(JSONUtil.toJsonStr(map));
}

}

@Data
@NoArgsConstructor
@AllArgsConstructor
class Student {
private String name;
private String sex;
private Integer teacherId;
}

结果 

{
"10002": [
{
"sex": "女",
"teacherId": 10002,
"name": "A2"
},
{
"sex": "男",
"teacherId": 10002,
"name": "A3"
}
],
"10001": [
{
"sex": "男",
"teacherId": 10001,
"name": "A1"
},
{
"sex": "女",
"teacherId": 10001,
"name": "A4"
}
],
"10003": [
{
"sex": "男",
"teacherId": 10003,
"name": "A5"
}
]
}

标签:Map,String,List,list,sex,Student,new,teacherId,import
From: https://blog.51cto.com/u_15856116/5813296

相关文章

  • mysql id为string类型 不能自增 新增的时候这个该怎么办?
    当一张表的主键id是string类型的,并且不能自增新增的时候可能就会一直报错这个时候该怎么办呢?使用UUID  把这个id放到对应的地方就行了。......
  • HashMap初始化容量
    HashMap初始化容量《阿里巴巴Java开发规约》中有提到:【推荐】集合初始化时,指定集合初始值大小。说明:HashMap使用如下构造方法进行初始化,如果暂时无法确定集合大小,那么指定......
  • c#:两个list不同元素,值类型,对象类型
    基本值类型publicstaticList<T>GetListDiff<T>(List<T>listA,List<T>listB){List<T>ret=newList<T>();if(listA.Count>listB.Count)......
  • org.apache.commons.lang3 StringUtils 解析
    字符串是在程序开发中最常见的,ApacheCommons开源项目在org.apache.commons.lang3包下提供了StringUtils工具类,该类相当于是对jdk自带的String类的增强,主要做了几方面的处......
  • Leetcode第1662题:检查两个字符串数组是否相等(Check if two string arrays are equival
    解题思路输入是两个字符串数组,包含的元素数目不一定相同,每个元素包含的字符数目也不一定相同。使用两个指针p和i分别记录遍历的元素位置和字符位置。指针p1和p2分别表示......
  • Java学习之String
    概述写在前面,工作第四年,重新把基础抓起来吧。String可以说是JDK中最基础的一个类。就记录一些日常开发中最常用的方法。String类是非可变类,其对象一旦创建,就不可销毁。Strin......
  • CMakeLists命令解读
    cmake_minimum_required(VERSION3.0)#指定cmake最小版本project(cloud_viewer)#设置项目名称它会引入两个变量cloud_viewer_BINARY_DIRcloud_viewer_SOURCE_DIRa......
  • parameterType、resultType和resultMap
    一、parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。1、传递简单类型,使用#{}占位符或${}进行sql拼接。<!--根据用户id查询......
  • 关于hashMap的容量为什么是2的幂次方数
    先看hashMap的构造方法publicHashMap(intinitialCapacity,floatloadFactor){if(initialCapacity<0)thrownewIllegalArgumentException(......
  • HashMap详解
    HashMap详解HashMap相关介绍HashMap是Java中的比较常见的集合,主要存放的是键值对,以key-value的形式存储,不是线程安全的。它里面的存储的key和value可以为null值,但是key......