在使用Java Stream API将List转换为Map时,如果遇到Duplicate Key的问题,这通常是因为List中存在多个元素映射到相同的Key上。Java的Map接口要求每个Key都是唯一的,因此当尝试将多个元素映射到同一Key时,就会引发异常。 以下是解决Java Stream转Map时Duplicate Key问题的两种方法: 1. 使用toMap收集器与合并函数 Collectors...
Map<String,String>map=list.stream().collect(Collectors.toMap(Person::getId,Person::getName,(key1,key2)->key1+","+key2));System.out.println(map); 输出结果: 3.重复时将重复key的数据组成集合 代码语言:javascript 复制 Map<String,List<String>>map=list.stream().collect(Collectors.toMap(Person:...
Map<String,String>map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName,(value1 , value2)-> value1+","+value2 )); 1. 2. Duplicate key 解决办法三:重复时将重复key的数据组成集合 // 重复时将重复key的数据组成集合 Map<String,List<String>> map = list.stream().col...
2⃣️、然后将List转为,以id为key,整个user对象为value的Map,加入如下代码 Map<Integer,User>collect=list.stream().collect(Collectors.toMap(User::getId,listSub->listSub)); 3⃣️、会发现报如下异常 Exception in thread"main"java.lang.IllegalStateException:Duplicate keyUser(id=0,userName=null,pa...
Map<String,String>map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName)); System.out.println(map); 1. 2. 3. 4. 5. 6. 7. 8. 9. 输出结果为: 注意:用Collectors的toMap方法转换List,一般会遇到两个问题。一个是转换map,key重复问题;另一个是空指针异常,即转为map的va...
一、第一种问题报的错误如下:Duplicate key 原因是声明List集合时,有的值重复,如图: 解决方法:(分三种,具体哪种看业务需求) 1.重复时用后面的value 覆盖前面的value Map<String,String> map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName,(key1 , key2)->key2 )); ...
一、问题由来 最近生成环境刚发布了一个版本,本人负责优化的一个功能在进行测试时,报错了一个异常,duplicate key;去百度里面看了一下, 意思很明确就是建重复,而且错误是在Java代码中抛出来的。 二、问题分析 自己立马去查看Java代码,发现这样写是没有问题的,问题出在查询出来的结果进行转换时,键有重复的,可是有...
@TestpublicvoidduplicateKeyDemo(){// 测试数据List<Commodity>list=this.getCommodityList();// 去重Map<String,Commodity>mapSuccess=list.stream().collect(Collectors.toMap(Commodity::getCode,Function.identity(),(commodity1,commodity2)->commodity1));log.info("mapSuccess:{}",mapSuccess);// 异常Map<...
在java8之前,这种转换需要先new一个Map对象,遍历list然后通过Map#put来初始化。 使用java8后,可方便的使用list.stream().collect(Collectors.toMap(...))进行转换。 然而这种转换可能会遇到转换失败程序报错的情况,这里总结了常见的2种报错的例子和解决思路。示例...
//将list转换map Mapmap = list.stream().collect(Collectors.toMap(Person::getId, Person::getName)); System.out.println(map); 输出结果为: 注意:用Collectors的toMap方法转换List,一般会遇到两个问题。一个是转换map,key重复问题;另一个是空指针异常,即转为map的value是null。