List<String> 使用stream转map 其中String 为key ,value 为new List
时间: 2024-04-26 08:27:11 浏览: 93
可以使用Java 8中的Stream API将List<String>转换为Map<String, List<String>>。代码如下:
```
List<String> list = Arrays.asList("a", "b", "c", "a");
Map<String, List<String>> map = list.stream()
.collect(Collectors.groupingBy(s -> s, Collectors.mapping(s -> "new List", Collectors.toList())));
```
上述代码中,首先将List<String>转换为Stream<String>,然后使用groupingBy对元素进行分组,其中第一个参数为分组的依据,即String类型的值;第二个参数为分组后的值的处理方式,即将String类型的值转换为"new List"字符串,然后将其收集到一个新的List中。最后,将分组后的结果收集到一个Map<String, List<String>>中。
相关问题
用stream將list<Map<String,List<String>>> 转化为Map<String,List<String>>
可以使用flatMap方法将所有的Map合并成一个,然后使用Collectors.groupingBy方法按照key进行分组,最终得到一个Map<String,List<String>>。
代码示例:
```
List<Map<String,List<String>>> list = new ArrayList<>();
// 添加数据到list中
Map<String,List<String>> result = list.stream()
.flatMap(map -> map.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue,
Collectors.reducing(new ArrayList<>(),
(a, b) -> {
a.addAll(b);
return a;
}))));
```
解释:
1. 首先使用flatMap方法将所有的Map合并成一个,flatMap方法会将所有的元素合并成一个流。
2. 然后使用Collectors.groupingBy方法按照key进行分组,这里的key就是Map中的String类型。
3. Collectors.mapping方法用于将Map.Entry对象转换为Map中的List<String>对象,这里的value就是List<String>类型。
4. Collectors.reducing方法用于将所有的List<String>对象合并成一个List<String>,这里使用addAll方法将两个List<String>合并成一个。
5. 最终得到的结果就是一个Map<String,List<String>>类型的对象。
java 将List<Object>分组为Map<String,List<String>> 使用stream
在Java中,可以使用Stream API将`List<Object>`分组为`Map<String, List<String>>`。下面是一个示例代码:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Object> objects = List.of(
new Object("A", "Apple"),
new Object("B", "Banana"),
new Object("A", "Avocado"),
new Object("C", "Cherry"),
new Object("B", "Blueberry")
);
Map<String, List<String>> groupedMap = objects.stream()
.collect(Collectors.groupingBy(Object::getKey,
Collectors.mapping(Object::getValue, Collectors.toList())));
System.out.println(groupedMap);
}
static class Object {
private String key;
private String value;
public Object(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
}
}
```
在上面的代码中,我们首先创建了一个`List<Object>`对象,其中每个对象都有一个键和一个值。然后,我们使用Stream的`groupingBy`方法将对象按照键进行分组,并使用`mapping`方法将值映射为列表。最后,我们将结果收集到一个`Map<String, List<String>>`中。
阅读全文