如何在 Java 中创建列表列表并添加任何类型的列表? [复制]
Posted
技术标签:
【中文标题】如何在 Java 中创建列表列表并添加任何类型的列表? [复制]【英文标题】:How to create a List of Lists and add Lists of any type ti this one in Java? [duplicate] 【发布时间】:2014-09-02 18:28:51 【问题描述】:我想知道如何创建一个可以包含其他列表的列表,这些列表本身可能包含任何类型的对象。
我试过了,但没用:
List<List<Object>> lists;// Also tried this List<List<? extends Object>> listados;
List<Integer> code;
List<String> name;
lists.add(1, code);
lists.add(2, name);
【问题讨论】:
你在add
之前实例化列表了吗?
【参考方案1】:
你也可以这样做,
ArrayList<ArrayList> lists = new ArrayList<ArrayList>();
ArrayList<Integer> l = new ArrayList<Integer>();
l.add(1);
l.add(2);
ArrayList<String> l1 = new ArrayList<String>();
l1.add("hi");
l1.add("hello");
lists.add(l);
lists.add(l1);
for(ArrayList al : lists)
for(Object o : al)
System.out.println(o);
【讨论】:
我几乎不认为使用原始类型绕过泛型可以回答问题 你能解释一下使用 ArrayList 的好处吗? @NonExistent 使用这种方式没有优势,不如program to interface【参考方案2】:以上答案基本正确。我只是稍微修改一下。
List<List<Object>> lists = new ArrayList<>();
List<Integer> listOne = new ArrayList<>();
listOne.add(1);
listOne.add(2);
List<String> listTwo = new ArrayList<>();
listTwo.add("three");
listTwo.add("four");
lists.add(listOne);
lists.add(listTwo);
【讨论】:
允许Object
不是更严格的类型化做法,您应该尽可能地限制类型
对于第一行,可以这样写:List> 列表 = 新的 ArrayList();
它甚至无法编译。 Test.java:16: 错误:找不到合适的方法 add(ListList<List<Object>>
更改为List<List<? extends Object>>
【参考方案3】:
你需要这样的东西
List<List<? extends Animal>> lists = new ArrayList<>();
List<Person> listOne = new ArrayList<>();
listOne.add(new Person("abc"));
listOne.add(new Person("def"));
List<Dog> listTwo = new ArrayList<>();
listTwo.add(new Dog("abc"));
listTwo.add(new Dog("def"));
lists.add(listOne);
lists.add(listTwo);
【讨论】:
不,您只添加相同类型的列表,我需要将不同类型的列表添加到单个列表中。 你的意思是这样的(见更新) 嗯,是这样的,但如果你能用真正的课程做到这一点,我将不胜感激 这些是真正的课程以上是关于如何在 Java 中创建列表列表并添加任何类型的列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章