Java 二维阵列列表

Java 二维阵列列表,java,Java,我知道我可以通过在数组旁边添加另一个[]来向数组添加维度。但是在java.util.ArrayList中可以有多个维度吗?我怎样才能做到这一点呢?是的,这是可能的。只需将ArrayList中的元素也设置为ArrayLists ArrayList<ArrayList<Integer>> twoDArrayList = new ArrayList<ArrayList<Integer>>(); ArrayList twoDArrayList=新建Arr

我知道我可以通过在数组旁边添加另一个[]来向数组添加维度。但是在java.util.ArrayList中可以有多个维度吗?我怎样才能做到这一点呢?

是的,这是可能的。只需将
ArrayList
中的元素也设置为
ArrayLists

ArrayList<ArrayList<Integer>> twoDArrayList = new ArrayList<ArrayList<Integer>>();
ArrayList twoDArrayList=新建ArrayList();
这不仅适用于
ArrayLists
,还适用于其他集合类型

List<ArrayList<Integer>> twoDArrayList = new ArrayList<ArrayList<Integer>>();
在这种情况下,数组将是定义尺寸的“矩形”形式:

  0 1 2 3 4 5
0 [][][][][][]
1 [][][][][][]
2 [][][][][][]
3 [][][][][][]
4 [][][][][][]  
正如另一位成员在下面的评论中所建议的,还有更多。“二维数组”仅仅是其他数组的数组,上面的代码行是以下内容的缩写:

int[][] array = new int[5][];
array[0] = new int[6];
array[1] = new int[6];
array[2] = new int[6];
array[3] = new int[6];
array[4] = new int[6];
或者,可以用不同的大小实例化子数组,在这种情况下,“数据形状”将不再是矩形:

int[][] array = new int[5][];
array[0] = new int[2];
array[1] = new int[4];
array[2] = new int[1];
array[3] = new int[6];
array[4] = new int[3];

  0 1 2 3 4 5
0 [][]        
1 [][][][]    
2 []          
3 [][][][][][]
4 [][][]
使用
ArrayList
方法将生成一个“列表列表”,其中所涉及的所有列表的长度将随着执行的操作而增长

没有速记来预先定义尺寸。子列表必须插入到主列表中,然后数据元素必须插入到子列表中。因此,数据的形状类似于第二个示例:

0 [][]        <- list with 2 elements
1 [][][][]    <- list with 4 elements
2 []          ...and so on
3 [][][][][][]
4 [][][]
列表(与所有其他集合一样)只允许使用装箱类型。因此,虽然可以预先定义列表的长度,但其元素的默认值始终为空

List<Integer> = new ArrayList<Integer>(10); // all elements will default to null
List=newarraylist(10);//所有元素都将默认为null

是的,你可以!在常规数组中,添加第二对大括号时,将创建一个普通数组,用于存储array类型的对象。您可以在这里执行相同的操作,使ArrayList保存ArrayList类型的内容:
ArrayList list=new ArrayList()

重复使用列表将导致错误,因此,最好的方法是List@paulkore,如果我们有二维
数组列表
列表
,如何迭代,如上所示?@paulkore,请注意,二维数组(如果一次创建一行)可以是非矩形的“参差不齐”数组,很像你的列表示例。@paulkore:user4229245提到的是一个非常重要的事实!你只是简单地陈述错误的事情,让人困惑people@h345k34cr,谢谢你指出这一点。我现在修改了答案,希望能更好地反映这一情况。我必须说,我觉得你的评论不必要地严厉,因为我的意图是分享我当时的最佳理解,而不是“说错话迷惑人”。我希望你在以后的评论中选择更友好的方式。
int[][] array1 = new int[5][6];         // all elements will default to 0
Integer[][] array2 = new Integer[5][6]; // all elements will default to null
List<Integer> = new ArrayList<Integer>(10); // all elements will default to null