java 集合行转列列转行
时间: 2023-08-10 20:06:22 浏览: 134
在Java中,可以使用一些方法将集合的行转列或列转行。下面我将介绍两种常见的方法。
方法一:使用循环遍历集合
行转列:
```java
List<List<Object>> rows = new ArrayList<>(); // 原始行数据
List<List<Object>> columns = new ArrayList<>(); // 转换后的列数据
// 遍历每一行
for (List<Object> row : rows) {
// 遍历行中的每个元素
for (int i = 0; i < row.size(); i++) {
// 如果列数据还没有到达对应位置,则添加一个新的列
if (columns.size() <= i) {
columns.add(new ArrayList<>());
}
// 将元素添加到对应的列中
columns.get(i).add(row.get(i));
}
}
```
列转行:
```java
List<List<Object>> columns = new ArrayList<>(); // 原始列数据
List<List<Object>> rows = new ArrayList<>(); // 转换后的行数据
// 遍历每一列
for (List<Object> column : columns) {
// 遍历列中的每个元素
for (int i = 0; i < column.size(); i++) {
// 如果行数据还没有到达对应位置,则添加一个新的行
if (rows.size() <= i) {
rows.add(new ArrayList<>());
}
// 将元素添加到对应的行中
rows.get(i).add(column.get(i));
}
}
```
方法二:使用Java 8的流操作
行转列:
```java
List<List<Object>> rows = new ArrayList<>(); // 原始行数据
List<List<Object>> columns = IntStream.range(0, rows.get(0).size())
.mapToObj(i -> rows.stream().map(row -> row.get(i)).collect(Collectors.toList()))
.collect(Collectors.toList());
```
列转行:
```java
List<List<Object>> columns = new ArrayList<>(); // 原始列数据
List<List<Object>> rows = IntStream.range(0, columns.get(0).size())
.mapToObj(i -> columns.stream().map(column -> column.get(i)).collect(Collectors.toList()))
.collect(Collectors.toList());
```
以上是两种常见的方法,可以根据具体需求选择适合的方法进行行列转换。