我可以创建一个二维数组,其元素是List

时间:2017-02-19 09:05:08

标签: java arrays

正如标题所说,我想制作一个如下所示的二维数组:

List<List<Integer>>[][] dp = new LinkedList<List<Integer>>[3][3];

然后编译器不允许我这样做。 很容易想到使用类来封装它。像这样:

class Node{
    List<List<Integer>> list = ...;
}
Node[][] nodes = new Node[3][3];

但我想知道是否存在更简单的方法来实现这一点。

2 个答案:

答案 0 :(得分:1)

如果你想要简单,你将不得不忍受这个丑陋的演员:

List<List<Integer>>[][] dp = (LinkedList<List<Integer>>[][]) new Object[3][3];

在java中,我们无法创建通用数组。这是一个长时间的讨论,我鼓励你阅读它。

简而言之,java对泛型一无所知 - 它只是在编译时检查类型安全性,然后&#34;翻译&#34;普通Object

的泛型

答案 1 :(得分:0)

我更喜欢创建一个扩展List的类,如下所示:

private static class ListOfList extends LinkedList<List<Integer>> {}

比,

ListOfList[][] dp = new ListOfList[3][3];

请注意,我使用了嵌套类,因此它将进入主类。