我最近参加了一次面试,面试官问我一个关于 Arrays
和 ArrayList
的问题。
他问我数组数组是否可以是多维的,那为什么ArrayList
的ArrayList
不是多维的?
例如:
// Multidimensional
int[][] array = new int[m][n];
// Not multidimensional
ArrayList<ArrayList<Integer>> seq = new ArrayList<ArrayList<Integer>>();
谁能帮我理解这个?
最佳答案
Cay S. Horstmann 在他的Core Java for the impatient一书中说过:
There are no two-dimensional array lists in Java, but you can declare a variable of type
ArrayList<ArrayList<Integer>>
and build up the rows yourself.
由于 ArrayList
s 可以伸缩,变成锯齿状,而不是多维的,可以说它不是二维数组,多维的意思是固定行和列,因此为什么我还在评论中声明 Java 没有 true 多维数组,但这超出了您的问题范围。
如果你好奇我为什么说 Java 没有 true 多维数组,请阅读 the differences between a multidimensional array and an array of arrays in C#?
为了让我的回答更清楚,关于 Java 是否有 true 多维数组,我确实 not 说 java 没有多维数组,我说 Java 没有 true 多维数组,正如所料 JLS已声明:
A multidimensional array need not have arrays of the same length at each level.
关于java - 为什么 ArrayList 的 ArrayList 不是多维的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43860618/