繁体   English   中英

Java动态数组的2D静态数组

[英]2D static array of dynamic array in Java

我有一个2D数组作为NxM大小的输入,其中N是已知的并且是静态的,并且M实际上是动态增长的,并且对于数组的每个索引[0 ... N-1]都是不同的。

我当时想我可以像这样初始化2D数组:

ArrayList<Integer>[] array = new ArrayList[n];

但这会使所有子数组都初始化为null而不是ArrayList实例。 例如,打电话

array[0].add(1);

使用NullPointerException崩溃

如何正确初始化ArrayList?

您已经初始化了数组本身,而不是第一个索引处的列表(依此类推……)。

List<Integer>[] array = new ArrayList[n];
array[0] = new ArrayList<>();
array[0].add(1);

无论如何,我建议您避免使用数组结构,而应选择List<List<Integer>> 或创建元组类( 有关值对的Java集合的更多信息?(元组?) )。

您将在Oracle文档中看到

您不能创建参数化类型的数组。

您可以使用ArrayList<ArrayList<T>>List<List<T>>

这是我的处理方式:

        List<ArrayList<Integer>> complex = new ArrayList <ArrayList<Integer>>();
        ArrayList<Integer> simple = new  ArrayList<Integer>();
        simple.add((Integer)5555);
        complex.add(simple);
ArrayList<Integer>[] array = new ArrayList[n];

而不是这样做。 您可以执行以下操作:

List<List<Integer>> list1 = new ArrayList<>();
List<Integer> list2 = new ArrayList<>();
list2.add(2);
list1.add(list2);
ArrayList[] array = list1.toArray(new ArrayList[10]);
System.out.println(array[0]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM