Stream流 | 根据Collectors.toMap收集自身对象 [ 技术杂谈 ]
九叶的小窝 文章 正文
![As Long As You Love Me.](https://api.qwq.ro/storage/users/uid-1/1661304663.png)
九叶
{{nature("2021-12-06 14:45:25")}}更新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
,就是将对象自己返回。
{{nature('2021-12-07 15:29:00')}} {{format('2671')}}人已阅读
{{nature('2021-01-31 20:01:00')}} {{format('1172')}}人已阅读
{{nature('2020-12-11 21:17:00')}} {{format('1085')}}人已阅读
{{nature('2021-04-22 15:16:00')}} {{format('1056')}}人已阅读
目录
标签云
一言
评论 0
{{userInfo.data?.nickname}}
{{userInfo.data?.email}}