JiuyeXD's Blog
九叶
九叶博主

越努力 越幸运

登录
夜间

Stream流 | 根据Collectors.toMap收集自身对象

1. 描述

日常开发中我们通常会想将 List 集合根据某个成员变量为 key 值将其转成 Map 集合,如下:

package com.wanlingyun.slhospital.patient.entity;

@Data
public class Conclucion {
    private String type;
    private String conclusionNo;
    //原始分
    private String conclusion;
    //T分
    private String tConclusion;
    private String name;
    private String explain;
}

有一个封装上面实体的 List 集合,现在有下面两个需求: 假设 list 里面存了一些数据

List<Conclucion> list = new ArrayList<>();

2. 几种用法

2.1 根据 conclusionNoexplain 将其转成 Map 集合
Map<String, Conclucion> groupConclusion = conclusion.stream()
          .collect(Collectors.toMap(con -> con.getConclusionNo(), con -> con.getExplain()));
Map<String, Conclucion> groupConclusion = conclusion.stream()
          .collect(Collectors.toMap(Conclusion::getConclusionNo, Conclusion::getExplain));
2.2.1 根据 conclusionNo对象本身 转成 Map 集合
Map<String, Conclucion> groupConclusion = conclusion.stream()
          .collect(Collectors.toMap(con -> con.getConclusionNo(), con -> con));
Map<String, Conclucion> groupConclusion = conclusion.stream()
          .collect(Collectors.toMap(Conclusion::getConclusionNo, Function.identity()));
2.2.2 Tip:

这里的 Function.identity() 等价于第一个方法的 con -> con,就是将对象自己返回。

image.png

THE END