JAVA804_List.stream().collect(Collectors.toMap(User::getId, k1->k1,(k1,k2)->k2))key重复问题

Posted 所得皆惊喜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA804_List.stream().collect(Collectors.toMap(User::getId, k1->k1,(k1,k2)->k2))key重复问题相关的知识,希望对你有一定的参考价值。

        List<User>userList=new ArrayList<>();
        userList.add(new User(1,"a"));
        userList.add(new User(2,"b"));
        userList.add(new User(3,"c"));
        userList.add(new User(4,"取前者的值"));
        userList.add(new User(4,"取后者的值"));
        userList.add(new User(5,"e"));
        /**
         如果key中有值重复,取前者(这里打印的是 4:取前者的值)
         1====User(id=1, name=a)
         2====User(id=2, name=b)
         3====User(id=3, name=c)
         4====User(id=4, name=取前者的值)
         5====User(id=5, name=e)
         */
        //Map<Integer, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, k1 -> k1, (K1, K2) -> K1));
        /**
         如果key中有值重复,取后者(这里打印的是 4:取后者的值)
         1====User(id=1, name=a)
         2====User(id=2, name=b)
         3====User(id=3, name=c)
         4====User(id=4, name=取后者的值)
         5====User(id=5, name=e)
         */
        Map<Integer, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (K1, K2) -> K2));
        for (Integer key:userMap.keySet())
            System.out.println(key+"===="+userMap.get(key));
        

以上是关于JAVA804_List.stream().collect(Collectors.toMap(User::getId, k1->k1,(k1,k2)->k2))key重复问题的主要内容,如果未能解决你的问题,请参考以下文章

java list.stream.filter 效率高吗

java list.stream

Java8 stream基础

Java8-如何构建一个Stream

Java8新特性 --Stream

java1.8Stream流式算法