注意:用Collectors的toMap方法转换List,一般会遇到两个问题。一个是转换map,key重复问题;另一个是空指针异常,即转为map的value是null。问题解决!!!一、第一种问题报的错误如下:Duplicate key 原因是声明List集合时,有的值重复,如图: 解决方法:(分三种,具体哪种看业务需求) 1.重复时用后面的value 覆盖前面的valu...
所以为了解决顺序问题,可以使用LinkedHashMap来进行接收。 java publicclassTest{publicstaticvoidmain(String[] args){List<Example> list =newArrayList<>();for(longi =1; i <=5; i++) {Example example =newExample();example.setId(newRandom().nextLong());example.setDesc(String.valueOf(example.getId...
(1)list转map要注意重复对象,map转换方法要选择带mergeFunction参数的方法,如果key值重复,做合并处理,不然会抛异常!可以做到去重效果。 比如上面故意添加和id=8相同对象score为88,值不同。在map转换方法mergeFunction 为(oldValue, newValue)->newValue 使用新对象替换已有老对象,可以看到转换后id8的对象score变为88...
6、List实体转Map,想要有序的话,就使用以下操作(TreeMap 有序;Map 无序) TreeMap<String, List<BillPollEntity>> ascMonthBillPollMap = s.stream().collect(Collectors.groupingBy(t -> t.getDrawTime()), TreeMap::new, Collectors.toList())); //倒叙MAP NavigableMap<String, List<OpenActivityOut>>...
at JavaBase.lamda.List2Map.main(List2Map.java:47) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Duplicate key 解决办法一:遇到重复的key就使用后者替换 // 后面的值代替之前的值 Map<String,String>map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName,(value1 ,...
修改方案为List获取数据表数据,order by 之后进行List使用流式Stream转成LinkedHashMap,然后返回配置就可以的。 JDK8使用Stream的把List使用流式Stream转成LinkedHashMap Map<Integer, List<TbmFactorConfig>> tbmFactorConfigMap = tbmFactorConfigList.stream().collect(Collectors.groupingBy(TbmFactorConfig::getFactorVa...
Map> ans = list.stream().collect(Collectors.groupingBy(String::length)); 2. 通用方法 上面是针对特定的列表,针对业务进行开发转换,那么我们接下来尝试构建一个通用的工具类 这里我们主要借助的知识点就是泛型,一个重要的点就是如何获取Map中的key对于jdk < 1.8的写法,通过接口来定义实现key的获取姿势 ...
通过 Stream 的 map 函数,将 List1 中的元素与 List2 进行对比,若存在则返回 True,否则为 False。具体实现如下:java Map map1 = List1.stream().collect(Collectors.toMap(element -> element,element -> List2.contains(element) ? true : false ));这段代码利用 Stream 的 map 函数,...
当然,如果希望得到 Map 的 value 为对象本身时,可以这样写:userList.stream().collect(Collectors....