Map转list值被覆盖
时间: 2024-09-19 15:02:29 浏览: 29
Java Map 在put值时value值不被覆盖的解决办法
当将Map转换为List,如果Map中有多个相同的键(key),那么在转换过程中每个键对应的值(value)会被合并成一个List。例如,假设有一个Map<String, List<Integer>>,如果两个键有相同的值,它们将会被放在同一个列表中。
举个例子:
```java
Map<String, List<Integer>> map = new HashMap<>();
map.put("key1", Arrays.asList(1, 2));
map.put("key1", Arrays.asList(3, 4)); // 这里 key1 的值会被更新
map.put("key2", Arrays.asList(5));
List<List<Integer>> listValues = new ArrayList<>(map.values());
```
在这个例子中,`listValues` 将会包含两部分:
1. `key1` 对应的值 `[1, 2, 3, 4]`
2. `key2` 对应的值 `[5]`
如果你想要保留每个键单独的值列表,你需要保证Map里的每个键只关联一个值列表,或者在转换前对Map做一些特殊的处理,比如遍历并独立添加每个键的值到新列表中。
阅读全文