我可以在Java中初始化2D数组的数组/ arraylist <int>吗?</int>

时间:2015-01-18 03:41:13

标签: java arrays arraylist multidimensional-array

我可以初始化2D数组的ArrayList,这是一件事吗?

所以当我尝试初始化时,下面是我的代码

ArrayList<int>[][] suffle = new ArrayList<int>[row][col]; 

我收到这样的错误:

  

错误:语法错误,插入&#34;尺寸&#34;完成ReferenceType

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:5)

这是一件事,但你必须使用一个对象,而不是一个原始对象。这适用于所有通用类型。

ArrayList<Integer>[][] suffle = new ArrayList[row][col];

您将获得有关上述声明的编译器警告,但完全可以这样做。

根据您正在做的事情,最好使用列表清单,这样可以确保类型安全,与您从上面得到的未经检查的警告相反...... < / p>

List<List<Integer>> suffle = new ArrayList<>();

......或标准的二维数组:

int[][] suffle = new int[row][col];

答案 1 :(得分:2)

你也可以完全坚持原语,即

 int[][] i = new int[row][col]; 

或者混合并匹配int []

列表
ArrayList<int[]> al = new ArrayList<>();

几乎是一系列清单:

/* writing new ArrayList<Integer>[1], which is what 
you'd want to do, is not allowed for array creation.*/
ArrayList<Integer>[] a = new ArrayList[1]; 

答案 2 :(得分:0)

是的,您可以创建一个Object类型的二维数组(在本例中为ArrayList)。

但你需要把它写成:

ArrayList<Integer>[][] suffle = new ArrayList[row][col];

在初始化数组列表之前,还要确保将row和col初始化为整数值。

suffle的各个元素将声明为ArrayList类型,但不会初始化。您需要单独初始化它们。

答案 3 :(得分:0)

无论何时需要在菱形括号中使用泛型类型,都不应使用原始类型,如int,double等。应该使用相应的包装类型,如Integer和Double等。

我在很多论坛上看到这个问题之后,我已经在我的博客上解释了这个例子 - http://www.javabrahman.com/corejava/how-to-resolve-syntax-error-insert-dimensions-to-complete-referencetype/

(注意/披露 - 以上链接来自我拥有的博客)