1

有没有办法可以在java中的列表中添加任意数量的列表?

例如:

List<List<T>, List<T>, List<T>>

我知道这是不正确的语法,但我想做这样的事情。

4

3 回答 3

6

List<List<T>>将持有任意数量的List<T>. 例如:

List<List<T>> listOfLists = new ArrayList<List<T>>();

for (int i = 0; i < 10; i++) { // 10 is arbitrary here; just an example
    listOfLists.add(new ArrayList<T>());
}

如果没有关于用例或为什么要这样做的更多信息,我不能更具体。

于 2012-09-08T16:11:40.977 回答
1

如果您的意思是任意嵌套的列表列表列表列表...您可能希望使用树结构代替,如下所示:

class Tree<T> {
    T element;
    List<Tree<T>> children;
}

或者这个,如果你想分离中间层和值:

interface Tree<T> { 
}

class TreeNode<T> implements Tree<T> {
    List<Tree<T>> children;
}

class TreeLeaf<T> implements Tree<T> {
    T element;
}
于 2012-09-08T16:38:21.870 回答
0

假设您有列表list1, list2, ..., listN,您可以通过多种方式解决此问题:

为 n 元组创建自己的类: 这种方法将允许您将元组限制为特定大小,而无需重新实现CollectionorList类的方法。

public class ThreeTuple<A, B, C> {
    private final A first;
    private final B second;
    private final C third;

    public ThreeTuple(A first, B second, C third) {
        this.first = first;
        this.second = second;
        this.third = third;
    }

    public A getFirst() {
        return first;
    }

    public B getSecond() {
        return second;
    }

    public C getThird() {
        return third;
    }
}

public class OtherClass {
    public static void main(String[] args) {
        new ThreeTuple(list1, list2, list3);
    }
}

将 n 个列表添加到列表中: 这种方法绝对是最简单的,但不限制列表。

List<List<T>> lists = new ArrayList<T>();
lists.add(list1);
lists.add(list2);
lists.add(list3);
于 2012-09-08T16:16:13.183 回答