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

本文介绍了如何使用Java 8的Stream流结合Collectors.toMap方法,将List集合高效地转换为Map。示例中展示了如何根据GroupInfoEntity的id和name创建Map,以及如何以id为key保持对象本身。Function.identity()函数在此过程中用于保持对象不变。
Stream流 | Collectors.toMap 根据收集自身对象

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

GroupInfoEntity.java

@Data
public class GroupInfoEntity{
	/** 组织架构ID */
	private Long id;
	/** 组织架构名称 */
	private String name;
	/** 组织架构父ID */
	private Long parentId;
}

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

List<GroupInfoEntity> list = new ArrayList<>();
  • 1.根据 idname 将其转成 Map 集合

    Map<Long, String> map = list.stream().collect(Collectors.toMap(GroupInfoEntity::getId, GroupInfoEntity::getName));

  • 2.根据 id对象自己 转成 Map 集合

    Map<Long, GroupInfoEntity> map = list.stream().collect(Collectors.toMap(GroupInfoEntity::getId, Function.identity()));

这样就很完美的得到自己想要的数据。


注意:

这里的 Function.identity() 等价于 t -> t,就是将对象自己返回。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值