将二维列表添加到多维arraylist

时间:2014-06-21 10:20:34

标签: java arrays arraylist multidimensional-array

我有一个带有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

2 个答案:

答案 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);

现在,直接使用像这样的多维数组并不实用 - 你可能想把它们封装在一个对象中。