Arraylists的Arraylist的通用类型

时间:2012-02-29 10:25:25

标签: java generics arraylist

在正常的数组列表初始化中, 我们用于定义泛型类型,如下所示,

List<String> list1 = new ArrayList<String>();

但是对于ArrayLists的ArrayList,我们如何定义它的泛型类型?

数组列表数组列表的代码如下:

ArrayList[] arr=new ArrayList[n];
 for(int i=0;i<n;i++)
 {
 arr[i]=new ArrayList();
 } 

只要分享语法,如果有人知道它的话......!

5 个答案:

答案 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[]{};
即使你没有描述一个通用的通用语言,

也适用于声明!