集合Stream——List转Map

ref:https://www.cnblogs.com/exmyth/p/11012873.html


将List收集为Map:Collectors.toMap()

1.1 key和value都为集合元素的字段。
Map<Integer, Long> dbIndexDbIdMap=cluster.getDmDatabaseEntity()
	.stream()
	.collect(Collectors.toMap(DmDatabaseEntity::getDbIndex, DmDatabaseEntity::getId));

【注意】:上面的写法需保证key不重复,若key重复,会报错。

1.2 key为集合元素中的字段,value为元素对象本身。

若key重复,这时候就要在toMap方法中指定当key冲突时,应该怎么进行处理。((v1, v2) -> v2)的意思就是,如果存在重复的,永远取后面一个)

Map<String, Disk> map = disks.stream()
.collect(Collectors.toMap(Disk::getSlot, Function.identity(), (v1, v2) -> v2));Map<String, Disk> map = disks.stream()
.collect(Collectors.toMap(Disk::getSlot, s->s, (v1, v2) -> v2));
1.3 按照某一个字段,对List元素进行分组:Collectors.groupingBy() value为集合
Map<Integer, List<FindDatabaseInfoBO>> dbIndexDbMap = allDatabaseInfoBOList
	.stream()
	.collect(Collectors.groupingBy(FindDatabaseInfoBO::getDbIndex));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值