繁体   English   中英

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

[英]Can I initialize a array/arraylist<int> of 2D array in Java?

我可以初始化2D数组的ArrayList,这是一个什么东西?

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

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

我收到这样的错误:

错误:语法错误,插入“Dimensions”以完成ReferenceType

我怎样才能解决这个问题?

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

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

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

根据您正在做的事情,最好使用列表列表,这将确保类型安全性与您从上面得到的未经检查的警告相反...

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

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

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

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

 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]; 

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

但你需要把它写成:

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

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

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

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

我在许多论坛上看到这个问题后,我已经在我的博客上用例子解释了这个问题 - http://www.javabrahman.com/corejava/how-to-resolve-syntax-error-insert-dimensions-to -完整,引用类型/

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM