我有一个2d列表的循环,我删除和添加元素,并希望将这些临时数组列表添加到另一个列表的维度。
,
// 2d list
List<List<Integer>> p = new ArrayList<List<Integer>>();
// 3d list
List<List<List<List<Integer>>>> list1 = new ArrayList<List<List<List<Integer>>>>();
// this compiles ok
list1.get(0).add(p);
,但我得到以下错误:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
您需要实例化每个列表。不仅仅是你要访问的那个。这意味着如果你有一个2x2矩阵,你需要2行= 2个列表,另一个列表来容纳它们,如果矩阵开始变得更复杂,就需要这样做。
List<List<Integer>> matrix = new ArrayList<List<Integer>>();
List<Integer> row = new ArrayList<Integer>();
matrix.add(row);
你的"list1"对象实际上是4d在你的例子中,但那些没有初始化,所以当你要求"list1"获得第一个(三维)列表在里面,它根本不存在(数组在Java中开始于0大小),所以没有什么要添加的。
你可以这样做:
List<List<List<List<Integer>>>> list1 = new ArrayList<List<List<List<Integer>>>>();
List<List<List<Integer>>>> 3dlist = new ArrayList<List<List<Integer>>>();
list1.add(3dlist)
list1.get(0).add(p);
现在,像这样直接使用多维数组是不实际的——您可能希望将它们封装在一个对象中。