java 集合类list多维
时间: 2024-11-21 08:30:48 浏览: 12
在Java中,List集合通常是一维的,它是一个有序的元素序列,允许重复的元素。然而,如果你需要处理二维或多维的数据结构,可以结合使用List以及嵌套的List或数组。
例如,你可以创建一个List<List<Integer>>来表示一个多维度的列表,其中每个内部的List代表一个一维的子列表。每个子列表可能包含任意数量的元素,这相当于一个二维表格。如果需要更多维度,比如三维数据,你可以继续使用这种模式,即每层都用List包装。
下面是一个简单的例子:
```java
List<List<List<Integer>>> multiDimensionalList = new ArrayList<>();
multiDimensionalList.add(new ArrayList<>()); // 第一层
multiDimensionalList.get(0).add(new ArrayList<>()); // 第二层
multiDimensionalList.get(0).get(0).add(1); // 添加一个元素到第三层
// 访问数据
int value = multiDimensionalList.get(0).get(0).get(0); // 获取 (0,0,0) 的值
```
相关问题
java 代码实现集合列转行
要将集合的列转行,你可以使用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`。
请注意,这个示例仅适用于二维集合,如果你有多维集合,你可能需要根据情况进行修改。
阅读全文