map list 转Map
时间: 2023-09-23 17:06:38 浏览: 102
map转化为list
5星 · 资源好评率100%
要将一个Map的List转换为一个Map,可以使用Java 8中的Stream API和Collectors类的toMap方法。使用toMap方法时,需要提供两个参数:一个用于指定键的函数和一个用于指定值的函数。如果键存在重复,还可以提供一个合并函数来解决冲突。下面是几个例子:
1. 如果想将Map的List中的所有键值对都合并到一个Map中,可以使用flatMap和Collectors.toMap方法:
```
Map<String, Object> merged = lists.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
```
2. 如果只想使用Map的List中的某个属性作为值,可以使用方法引用来指定属性的getter方法:
```
Map<Long, String> maps = userList.stream()
.collect(Collectors.toMap(User::getId, User::getAge, (key1, key2) -> key2));
```
3. 如果不想覆盖键相同的值,可以使用toMap方法的三个参数版本,并在合并函数中保留最初的值:
```
lists.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a));
```
4. 如果想覆盖键相同的值,可以再次使用toMap方法的三个参数版本,并在合并函数中选择最新的值:
```
lists.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> b));
```
这些例子展示了如何使用Stream API和Collectors类的toMap方法将Map的List转换为一个Map,并提供了一些处理键重复的选项。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [List<Map>转成一个Map](https://blog.csdn.net/qq_34412985/article/details/90242183)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [List转Map的三种方法](https://blog.csdn.net/qq_43563538/article/details/103364151)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文