1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java.lang.IllegalStateException: Duplicate key 【java8 toMap(key重复如何解决)】

java.lang.IllegalStateException: Duplicate key 【java8 toMap(key重复如何解决)】

时间:2022-01-23 09:01:58

相关推荐

java.lang.IllegalStateException: Duplicate key 【java8 toMap(key重复如何解决)】

使用stream的toMap()函数时,当key重复,系统会报错相同的key不能形成一个map,那么需要解决这个问题,

1、首先查看库中数据结构,相同人员编号存在多条关键词(arr_gic)

List xszyList = xszyMapper.query(TZhbaXszy.builder().cBjbrbhList(bjbrBhList).build().fetchAll());

//按照bjbrBh->xszy的映射,一个人多个摘要的时候,摘要进行拼接

Map<String, List> bjbrToZyMap = xszyList.stream().collect(Collectors.toMap(TZhbaXszy::getCBjbrbh, TZhbaXszy::getArrGjc));

报错:

2、解决方法

①相同key的情况下,丢弃重复的只随机保留一个

//bjbrBh->xszy的映射,一个人多个摘要的时候,摘要进行拼接

Map<String, List> bjbrToZyMap = xszyList.stream().collect(

Collectors.toMap(TZhbaXszy::getCBjbrbh, TZhbaXszy::getArrGjc,(g1,g2)->g2));

②相同key的情况下,把value变成list,形成Map(Object,List)的形式。

//bjbrBh->xszy的映射,一个人多个摘要的时候,摘要进行拼接

Map<String, List> bjbrToZyMap = xszyList.stream().collect(

Collectors.toMap(TZhbaXszy::getCBjbrbh, TZhbaXszy::getArrGjc,(

List oldList,List newList)->{

oldList.addAll(newList);

return oldList;

}));return bjbrToZyMap;

③相同key的情况下,丢弃重复的比较后保留一个

//bjbrBh->xszy的映射,一个人多个摘要的时候,摘要进行拼接

Map<String, List> bjbrToZyMap = xszyList.stream().collect(

Collectors.toMap(TZhbaXszy::getCBjbrbh, TZhbaXszy::getArrGjc,(g1,g2)->g1>=g2?g1:g2));

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。