杰瑞科技汇

Java List如何高效嵌套List?

Java中嵌套List的使用

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

Java List如何高效嵌套List?-图1
(图片来源网络,侵删)

基本语法

// 创建一个嵌套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<>();

注意事项

  1. 空指针异常:访问嵌套List时要注意检查是否为null
  2. 性能考虑:频繁操作嵌套List可能影响性能,考虑使用更高效的数据结构如数组
  3. 内存使用:大型嵌套List会占用较多内存
  4. 不可变性:如果需要不可变的嵌套List,可以使用Collections.unmodifiableList()

嵌套List是Java中处理复杂数据结构的基础工具,掌握它的使用对于开发复杂应用程序非常重要。

Java List如何高效嵌套List?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇