我有一个2D数组作为NxM大小的输入,其中N是已知的并且是静态的,并且M实际上是动态增长的,并且对于数组的每个索引[0 ... N-1]将是不同的。
我以为我可以这样初始化我的2D数组:
ArrayList<Integer>[] array = new ArrayList[n];
但是这会将所有子数组初始化为null而不是ArrayList实例。 例如,调用
array[0].add(1);
与NullPointerException
如何正确初始化ArrayLists?
答案 0 :(得分:3)
您已初始化数组本身,而不是第一个索引处的列表(依此类推......)。
List<Integer>[] array = new ArrayList[n];
array[0] = new ArrayList<>();
array[0].add(1);
无论如何,我建议你避免使用数组结构并选择List<List<Integer>>
。或者创建元组类(A Java collection of value pairs? (tuples?)处的更多信息)。
答案 1 :(得分:1)
答案 2 :(得分:0)
我将如何做到这一点:
List<ArrayList<Integer>> complex = new ArrayList <ArrayList<Integer>>();
ArrayList<Integer> simple = new ArrayList<Integer>();
simple.add((Integer)5555);
complex.add(simple);
答案 3 :(得分:0)
#!/usr/bin/env python3
import glob
import xml.etree.ElementTree as ET
filenames = glob.glob("C:\\Users\\####\\Desktop\\BNC2\\[A00-A0B]*.xml")
with open("C:\\Users\\####\\Desktop\\bnc.txt", "w") as outF:
for filename in filenames:
with open(filename, 'r', encoding="utf-8") as content:
tree = ET.parse(content)
root = tree.getroot()
for w in root.iter('w'):
lemma = w.get('hw')
pos = w.get('pos')
tag = w.get('c5')
outF.write(w.text + "," + lemma + "," + pos + "," + tag)
outF.write("\n")
而不是这样做。 你可以这样做:
ArrayList<Integer>[] array = new ArrayList[n];