内容
如何将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值会被统计到一起去。