有没有办法可以在java中的列表中添加任意数量的列表?
例如:
List<List<T>, List<T>, List<T>>
我知道这是不正确的语法,但我想做这样的事情。
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>());
}
如果没有关于用例或为什么要这样做的更多信息,我不能更具体。
如果您的意思是任意嵌套的列表列表列表列表...您可能希望使用树结构代替,如下所示:
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;
}
假设您有列表list1
, list2
, ..., listN
,您可以通过多种方式解决此问题:
为 n 元组创建自己的类:
这种方法将允许您将元组限制为特定大小,而无需重新实现Collection
orList
类的方法。
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);