用 stream list 转 map
时间: 2023-10-31 13:54:03 浏览: 138
java8新特性之stream的collect实战教程
5星 · 资源好评率100%
使用stream可以很方便地将List转换为Map。在JDK8以后,我们可以使用lambda表达式和Stream的collect方法来实现这个功能。具体的做法是使用Collectors.toMap方法,该方法接受两个参数,第一个参数是key的生成函数,第二个参数是value的生成函数。例如,可以使用以下代码将List<User>转换为Map<Integer, String>:
```
Map<Integer, String> userMap = userList.stream()
.collect(Collectors.toMap(User::getId, User::getName));
```
这里的User是一个自定义的类,getId和getName是User类的两个方法,分别用于生成Map中的key和value。上述代码将根据User对象的id作为key,name作为value,将List<User>转换为Map<Integer, String>。
如果你希望将List<User>直接转换为Map<Integer, User>,可以使用以下代码:
```
Map<Integer, User> userMap = userList.stream()
.collect(Collectors.toMap(User::getId, user -> user));
```
这里的User是一个自定义的类,getId是User类的一个方法,用于生成Map中的key,user -> user表示将User对象本身作为value。上述代码将根据User对象的id作为key,将User对象本身作为value,将List<User>转换为Map<Integer, User>。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
阅读全文