java 代码实现集合列转行
时间: 2023-08-10 14:06:23 浏览: 64
要将集合的列转行,你可以使用Java中的 API和Collectors类来实现。下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class CollectionTranspose {
public static void main(String[] args) {
List<List<Integer>> collection = new ArrayList<>();
collection.add(Arrays.asList(1, 2, 3));
collection.add(Arrays.asList(4, 5, 6));
collection.add(Arrays.asList(7, 8, 9));
List<List<Integer>> transposedCollection = transpose(collection);
for (List<Integer> row : transposedCollection) {
System.out.println(row);
}
}
public static <T> List<List<T>> transpose(List<List<T>> collection) {
int size = collection.stream().mapToInt(List::size).max().orElse(0);
return collection.stream()
.flatMap(row -> {
List<List<T>> rows = new ArrayList<>();
for (int i = 0; i < size; i++) {
if (i < row.size()) {
rows.add(Arrays.asList(row.get(i)));
} else {
rows.add(Arrays.asList((T) null));
}
}
return rows.stream();
})
.collect(Collectors.groupingBy(i -> collection.indexOf(i) % size))
.values()
.stream()
.map(rows -> rows.stream().map(row -> row.get(0)).collect(Collectors.toList()))
.collect(Collectors.toList());
}
}
```
在上面的示例中,我们定义了一个包含整数的二维集合`collection`,然后使用`transpose`方法将其列转行。最后,我们打印出转置后的集合`transposedCollection`。
请注意,这个示例仅适用于二维集合,如果你有多维集合,你可能需要根据情况进行修改。