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