java list结果横转纵
时间: 2023-07-20 18:24:49 浏览: 91
假设您有一个Java List,其中包含了多个Java对象,并且每个对象都包含了多个属性。您想将这个List从横向转换为纵向,其中每个属性都作为结果中的一个新的纵向属性。您可以使用Java 8的流(Stream)API来完成这个操作。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class ListStreamExample {
public static void main(String[] args) {
// 定义一个包含数据的列表
List<Map<String, String>> dataList = new ArrayList<>();
Map<String, String> data1 = new HashMap<>();
data1.put("Name", "User1");
data1.put("Age", "20");
data1.put("Gender", "Male");
dataList.add(data1);
Map<String, String> data2 = new HashMap<>();
data2.put("Name", "User2");
data2.put("Age", "30");
data2.put("Gender", "Female");
dataList.add(data2);
// 将横向列表转换为纵向列表
Map<String, List<String>> verticalMap = dataList.stream()
.flatMap(data -> data.entrySet().stream())
.collect(Collectors.groupingBy(Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
System.out.println(verticalMap);
}
}
```
在这个代码中,我们首先定义了一个包含数据的`dataList`列表,其中包含了两个Map对象,每个Map对象都包含了`Name`、`Age`和`Gender`三个属性。接着,我们使用流API的flatMap操作将所有属性扁平化为一个新的流中。然后,我们使用groupingBy操作按照属性名对这些属性进行分组,然后使用mapping操作将每个分组内的属性值转换为一个列表。最后,我们将分组后的结果收集到一个新的Map中,并将其打印出来。这样,我们就将一个横向的列表转换为了一个纵向的Map。
阅读全文