Java list转map操作

516 阅读1分钟

内容

如何将List<复杂对象> 转为Map对应的结构呢?

通过stream的基本方法达到list转map<object,object>的操作。

操作

首先基本的List转Map的结构分为以下几种

1、Map<基本数据类型,基本数据类型>

想要实现List转为这样的结构,可以借助stream中的toMap方法实现

实例:Map<Integer,Inteher> = list.stream.collect(Collectors.toMap(User::getUsername,User::getId));

2、Map<基本数据类型,List<复杂对象>>

实例:Map<Integer,List> = list.stream.collect(Collectors.groupingBy(User::getUsername));

3、Map<基本数据类型,List<基本数据类型>>

实例:tagShopDOS.stream().collect(Collectors.groupingBy(TagShopDO::getTagKeyId, HashMap::new, Collectors.mapping(TagShopDO::getTagValueId, Collectors.toList())));

这里不使用toMap的原因是:避免重复key的出现导致程序出错,toMap针对这样情况,可以自定义方法来选择value,但是这并不是我想要的结果。通过上述的方法,重复key对应value值会被统计到一起去。