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重复问题的主要内容,如果未能解决你的问题,请参考以下文章