将一个list转成map<String,List<>>
时间: 2023-11-11 11:30:52 浏览: 71
好的,你可以使用Java 8的Stream API将一个List转换成Map<String, List<?>>,示例代码如下:
```
List<String> list = Arrays.asList("a", "b", "c", "d", "e", "a", "b");
Map<String, List<String>> map = list.stream()
.collect(Collectors.groupingBy(Function.identity()));
```
这段代码首先使用Arrays.asList()方法创建了一个字符串类型的List。然后使用Stream API的collect方法,结合Collectors.groupingBy()方法将List中的元素按照键值进行分组,最终得到一个Map<String, List<String>>类型的结果,其中每个键都对应一个List,这个List中包含了原始List中所有和该键相同的元素。
相关问题
stream 将Map<String,List<对象>>转成Map<String,List<String>>
可以使用Java 8的Stream来进行转换。你可以使用`Stream`的`map`方法来将每个对象转换为字符串,然后将其收集到一个新的`List`中。接着,你可以将原始的`Map`中的键和新的`List`关联起来,从而得到一个新的`Map`。
下面是一个示例代码:
```java
Map<String, List<对象>> 原始Map = ...;
Map<String, List<String>> 转换后的Map = 原始Map.entrySet()
.stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> entry.getValue().stream()
.map(对象::toString) // 假设对象类有toString方法
.collect(Collectors.toList())
));
```
Map<String, List<String>> listMap Map<String, List<String>> listMap 相组合叠加
如果要将两个 `Map<String, List<String>>` 相组合叠加,可以使用 `putAll()` 方法:
```java
Map<String, List<String>> map1 = new HashMap<>();
// 向 map1 添加数据...
map1.put("key1", Arrays.asList("value1", "value2"));
map1.put("key2", Arrays.asList("value3"));
Map<String, List<String>> map2 = new HashMap<>();
// 向 map2 添加数据...
map2.put("key2", Arrays.asList("value4", "value5"));
map2.put("key3", Arrays.asList("value6"));
// 将 map2 中的数据合并到 map1 中
map1.putAll(map2);
```
以上代码中,我们首先创建了两个 `Map<String, List<String>>`,分别为 `map1` 和 `map2`,然后向这两个 Map 中添加了一些数据。最后,我们使用 `putAll()` 方法将 `map2` 中的数据合并到 `map1` 中。如果 `map1` 中已经存在某个 key,那么这个 key 对应的 value 会被替换为 `map2` 中的 value。
阅读全文