Stream 中的toMap

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

你可能感兴趣的:(Stream 中的toMap)