美文网首页
Stream 中的toMap

Stream 中的toMap

作者: 白驹过隙_忽然而已 | 来源:发表于2019-08-21 11:51 被阅读0次
1、指定key-value,value是对象中的某个属性值。
 Map<Integer,String> userMap1 = userList.stream().collect(Collectors.toMap(User::getId,User::getName));
2、指定key-value,value是对象本身,User->User 是一个返回本身的lambda表达式
Map<Integer,User> userMap2 = userList.stream().collect(Collectors.toMap(User::getId,User->User));
3、指定key-value,value是对象本身,Function.identity()是简洁写法,也是返回对象本身
 Map<Integer,User> userMap3 = userList.stream().collect(Collectors.toMap(User::getId, Function.identity()));
4、指定key-value,value是对象本身,Function.identity()是简洁写法,也是返回对象本身,key 冲突的解决办法,这里选择第二个key覆盖第一个key。
 Map<Integer,User> userMap4 = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(),(key1,key2)->key2));
5.重复时将前面的value 和后面的value拼接起来;
Map<String, String> map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName,(key1 , key2)-> key1+","+key2 ));
6.重复时将重复key的数据组成集合
Map<String, List<String>> map = list.stream().collect(Collectors.toMap(Person::getId,
                p ->  {
                    List<String> getNameList = new ArrayList<>();
                        getNameList.add(p.getName());
                        return getNameList;
                    },
                    (List<String> value1, List<String> value2) -> {
                        value1.addAll(value2);
                        return value1;
                    }
                 ));
       
         System.out.println(map);

相关文章

网友评论

      本文标题:Stream 中的toMap

      本文链接:https://www.haomeiwen.com/subject/cijbsctx.html