一切的美德都包含在自我信赖里。——爱默森
今天继续聊聊Stream
中Jdk8
已经为我们封装好的这个Collectors.toMap
前两天写的List to Map
工具类是为了解决key
重复问题
实际上我们可以用Collectors.toMap
的重载直接解决,例如
List<User> userList = new ArrayList<>(10);
Map<Integer, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (user1, user2) -> user2));
我们在toMap
的第三个参数给定,这里我们直接返回user2
,意思是如果遇到重复的key
[例如这里的userId
重复],我们使用第二个user
,也就是后者去覆盖前者
除了这点,我们还可以看到一个包含四个参数的重载
这里第四个参数是用于返回指定的map
使用的
例如我们需要返回一个LinkedHashMap
就可以这样写
代码语言:javascript复制userMap = userList.stream().collect(Collectors.toMap(User::getId, Function.identity(), (user1, user2) -> user2, LinkedHashMap::new));
第四个参数接收的是一个Supplier
,lambda
写法就是()->
这样啦!