我可以初始化2D数组的ArrayList,这是一件事吗?
所以当我尝试初始化时,下面是我的代码
ArrayList<int>[][] suffle = new ArrayList<int>[row][col];
我收到这样的错误:
错误:语法错误,插入&#34;尺寸&#34;完成ReferenceType
我该如何解决这个问题?
答案 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/
(注意/披露 - 以上链接来自我拥有的博客)