杰瑞科技汇

java list包含list

在 Java 中,一个 List 可以包含另一个 List,这被称为嵌套列表(Nested List),以下是几种实现方式及相关示例:


使用 List<List<T>>(最常见)

直接使用 Java 集合框架中的 ArrayListLinkedList 作为外层和内层列表的类型。

示例代码:

import java.util.ArrayList;
import java.util.List;
public class NestedListExample {
    public static void main(String[] args) {
        // 创建外层 List
        List<List<Integer>> outerList = new ArrayList<>();
        // 创建第一个内层 List 并添加元素
        List<Integer> innerList1 = new ArrayList<>();
        innerList1.add(1);
        innerList1.add(2);
        innerList1.add(3);
        // 创建第二个内层 List 并添加元素
        List<Integer> innerList2 = new ArrayList<>();
        innerList2.add(4);
        innerList2.add(5);
        // 将内层 List 添加到外层 List
        outerList.add(innerList1);
        outerList.add(innerList2);
        // 遍历嵌套 List
        for (List<Integer> innerList : outerList) {
            for (Integer num : innerList) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
}

输出:

1 2 3 
4 5 

使用自定义类(更结构化)

如果嵌套列表需要额外的逻辑或属性,可以定义一个自定义类来封装内层列表。

示例代码:

import java.util.ArrayList;
import java.util.List;
class InnerListContainer {
    private List<Integer> numbers;
    public InnerListContainer() {
        this.numbers = new ArrayList<>();
    }
    public void addNumber(int num) {
        numbers.add(num);
    }
    public List<Integer> getNumbers() {
        return numbers;
    }
}
public class CustomNestedListExample {
    public static void main(String[] args) {
        List<InnerListContainer> outerList = new ArrayList<>();
        InnerListContainer container1 = new InnerListContainer();
        container1.addNumber(10);
        container1.addNumber(20);
        InnerListContainer container2 = new InnerListContainer();
        container2.addNumber(30);
        outerList.add(container1);
        outerList.add(container2);
        for (InnerListContainer container : outerList) {
            for (Integer num : container.getNumbers()) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
}

输出:

10 20 
30 

使用泛型(更灵活)

可以通过泛型支持不同类型的嵌套列表。

示例代码:

import java.util.ArrayList;
import java.util.List;
public class GenericNestedListExample {
    public static void main(String[] args) {
        List<List<String>> stringList = new ArrayList<>();
        List<List<Double>> doubleList = new ArrayList<>();
        List<String> names = new ArrayList<>();
        names.add("Alice");
        names.add("Bob");
        List<Double> prices = new ArrayList<>();
        prices.add(19.99);
        prices.add(29.99);
        stringList.add(names);
        doubleList.add(prices);
        // 打印嵌套 List
        System.out.println("String List: " + stringList);
        System.out.println("Double List: " + doubleList);
    }
}

输出:

String List: [[Alice, Bob]]
Double List: [[19.99, 29.99]]

注意事项:

  1. 空指针异常:如果内层列表可能为 null,需检查:
    if (outerList != null && outerList.get(0) != null) {
        // 安全访问
    }
  2. 性能:频繁操作嵌套列表时,考虑使用更高效的数据结构(如 LinkedListCopyOnWriteArrayList)。
  3. 不可变性:如果需要不可变列表,可以使用 Collections.unmodifiableList()

  • 简单嵌套:直接使用 List<List<T>>
  • 复杂逻辑:通过自定义类封装内层列表。
  • 类型安全:利用泛型支持多种数据类型。

根据需求选择合适的方式即可!

分享:
扫描分享到社交APP
上一篇
下一篇