我有一个带有2d列表的循环,我删除并添加元素,并希望将这些临时arraylists添加到另一个列表的维度。
实施例,
// 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
答案 0 :(得分:1)
您需要实例化每个列表..而不仅仅是您尝试访问的列表。这意味着如果你有一个2x2矩阵,你需要2行= 2个列表,另外一个列表来保存它们,等等矩阵开始变得更复杂。
List<List<Integer>> matrix = new ArrayList<List<Integer>>();
List<Integer> row = new ArrayList<Integer>();
matrix.add(row);
答案 1 :(得分:0)
你的&#34; list1&#34;对象在你的例子中实际上是4d,但是那些没有被初始化,所以当你问&#34; list1&#34;要获得第一个(三维)列表,它根本不存在(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);
现在,直接使用像这样的多维数组并不实用 - 你可能想把它们封装在一个对象中。