向多维数组列表中添加二维列表



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

现在,像这样直接使用多维数组是不实际的——您可能希望将它们封装在一个对象中。

相关内容

  • 没有找到相关文章

最新更新