stream 流将list 转成双层map
时间: 2024-03-21 14:36:33 浏览: 151
stream流是Java 8引入的一种函数式编程的特性,它可以对集合进行一系列的操作,如过滤、映射、排序等。要将List转换为双层Map,可以使用stream流的collect方法结合Collectors.groupingBy来实现。
下面是将List转换为双层Map的示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> map1 = new HashMap<>();
map1.put("name", "Alice");
map1.put("age", "20");
list.add(map1);
Map<String, String> map2 = new HashMap<>();
map2.put("name", "Bob");
map2.put("age", "25");
list.add(map2);
Map<String, Map<String, String>> result = list.stream()
.collect(Collectors.groupingBy(m -> m.get("name"), Collectors.toMap(m -> m.get("age"), m -> m)));
System.out.println(result);
}
}
```
运行以上代码,输出结果为:
```
{Alice={20={name=Alice, age=20}}, Bob={25={name=Bob, age=25}}}
```
以上代码中,我们首先创建了一个List,其中包含两个Map对象。然后使用stream流的collect方法,通过Collectors.groupingBy将List按照"name"字段进行分组,再通过Collectors.toMap将每个分组中的元素按照"age"字段作为key,整个Map对象作为value进行收集。
阅读全文