在正常的数组列表初始化中, 我们用于定义泛型类型,如下所示,
List<String> list1 = new ArrayList<String>();
但是对于ArrayLists的ArrayList,我们如何定义它的泛型类型?
数组列表数组列表的代码如下:
ArrayList[] arr=new ArrayList[n];
for(int i=0;i<n;i++)
{
arr[i]=new ArrayList();
}
只要分享语法,如果有人知道它的话......!
答案 0 :(得分:12)
你可以简单地做
List<List<String>> l = new ArrayList<List<String>>();
如果您需要一系列列表,您可以
List<String>[] l = new List[n];
并安全地忽略或取消警告。
答案 1 :(得分:4)
如果你(真的)想要一个列表列表,那么这是正确的声明:
List<List<String>> listOfLists = new ArrayList<List<String>>();
我们无法创建通用数组。 new List<String>[0]
是编译时错误。
答案 2 :(得分:0)
这样的事情:
List<List<Number>> matrix = new ArrayList<List<Number>>();
for (int i = 0; i < numRows; ++i) {
List<Number> row = new ArrayList<Number>();
// add some values into the row
matrix.add(row);
}
将内部列表的类型设置为您想要的任何内容;这仅用于说明目的。
答案 3 :(得分:0)
您正在谈论一系列列表(更具体的ArrayLists)。 Java不允许生成通用数组(除非使用通配符,请参阅下一段)。因此,您应该忘记为数组使用泛型,或者使用列表而不是数组(为此提出了许多解决方案)。
引自IBM article:
数组是协变的另一个结果是泛型不是你无法实例化泛型类型的数组(新的List [3]是非法的),除非type参数是一个无界的通配符(new List&lt;? &gt; [3]是合法的。)
答案 4 :(得分:0)
你是对的:这看起来很疯狂。 (可能是它的一个Bug ...) 而不是使用
ArrayList<String>[] lst = new ArrayList<String>[]{};
使用:
ArrayList<String>[] list1 = new ArrayList[]{};
即使你没有描述一个通用的通用语言,也适用于声明!