Java中嵌套List的使用
在Java中,嵌套List指的是一个List集合中包含另一个List集合作为其元素,这种数据结构在处理多维数据或层次结构数据时非常有用。

基本语法
// 创建一个嵌套List,外层List的元素是List<Integer> List<List<Integer>> nestedList = new ArrayList<>();
完整示例
import java.util.ArrayList;
import java.util.List;
public class NestedListExample {
public static void main(String[] args) {
// 创建嵌套List
List<List<Integer>> matrix = new ArrayList<>();
// 添加子List
List<Integer> row1 = new ArrayList<>();
row1.add(1);
row1.add(2);
row1.add(3);
matrix.add(row1);
List<Integer> row2 = new ArrayList<>();
row2.add(4);
row2.add(5);
row2.add(6);
matrix.add(row2);
List<Integer> row3 = new ArrayList<>();
row3.add(7);
row3.add(8);
row3.add(9);
matrix.add(row3);
// 访问嵌套List元素
System.out.println("第一行第二列的元素: " + matrix.get(0).get(1)); // 输出: 2
// 遍历嵌套List
System.out.println("\n遍历整个嵌套List:");
for (List<Integer> row : matrix) {
for (Integer num : row) {
System.out.print(num + " ");
}
System.out.println();
}
// 修改元素
matrix.get(1).set(1, 99); // 将第二行第二列的元素改为99
System.out.println("\n修改后的第二行: " + matrix.get(1));
// 添加新行
List<Integer> newRow = new ArrayList<>();
newRow.add(10);
newRow.add(11);
newRow.add(12);
matrix.add(newRow);
System.out.println("\n添加新行后的嵌套List大小: " + matrix.size());
}
}
其他常见操作
创建并初始化嵌套List
// 使用Java 8 Stream API创建
List<List<Integer>> nestedList = IntStream.range(0, 5)
.mapToObj(i -> IntStream.range(0, 3)
.mapToObj(j -> i * 3 + j)
.collect(Collectors.toList()))
.collect(Collectors.toList());
检查嵌套List是否为空
if (nestedList == null || nestedList.isEmpty()) {
System.out.println("嵌套List为空");
}
// 检查所有子List是否为空
boolean allEmpty = nestedList.stream().allMatch(List::isEmpty);
扁平化嵌套List(将嵌套List转换为单层List)
List<Integer> flattened = nestedList.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
使用泛型创建不同类型的嵌套List
// 嵌套String List List<List<String>> stringMatrix = new ArrayList<>(); // 嵌套自定义对象List List<List<Person>> personMatrix = new ArrayList<>();
注意事项
- 空指针异常:访问嵌套List时要注意检查是否为null
- 性能考虑:频繁操作嵌套List可能影响性能,考虑使用更高效的数据结构如数组
- 内存使用:大型嵌套List会占用较多内存
- 不可变性:如果需要不可变的嵌套List,可以使用
Collections.unmodifiableList()
嵌套List是Java中处理复杂数据结构的基础工具,掌握它的使用对于开发复杂应用程序非常重要。

