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 根据 conclusionNo
和 explain
将其转成 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
,就是将对象自己返回。