我正在尝试实现一个LinkedHashMap数组,但我不知道它是否可能......
目前我的代码如下:
public class LHMap {
public static void main(String[] args) {
LinkedHashMap<String, Integer>[] map = null;
for (int i = 0; i < 5; i++) {
map[i] = new LinkedHashMap<String, Integer>();
}
map[0].put("a", 0);
System.out.println(map[0].get("a"));
}
}
System.out.println(extracted(map)[0].get("a"));
返回“NullPointerException”...
你知道如何实现这个吗?
编辑:1。擦除extract(),2。table-&gt; array
答案 0 :(得分:2)
我不知道您的extracted()
方法尝试做什么。您收到NullPointerException
,因为您已将map
传递给extracted
,然后您立即将其返回。在您的示例中,您传入null
然后返回它。您无法在空数组上找到i th 下标(或任何下标)。
而不是LinkedHashMap
的数组,而List
会有效吗?
List<Map<String, Integer>> listOfMaps = new ArrayList<Map<String, Integer>>();
for(int i = 0; i < 5; i++) {
listOfMaps.add(new LinkedHashMap<String, Integer>());
}
listOfMaps.get(0).put("a", 0);
System.out.println(listOfMaps.get(0).get("a"));
修改强>
顺便说一下,你不能用泛型实例化一个数组。如果你想要类型安全,我建议你去列表。否则你必须要做:
LinkedHashMap<String, Integer>[] map = new LinkedHashMap[5];
然而,这会给你警告。
答案 1 :(得分:0)
map[i] = new LinkedHashMap<String, Integer>();
这将导致NPE,因为您从不初始化map,或者更确切地说,您将其显式初始化为NULL:
LinkedHashMap<String, Integer>[] map = null;
编辑:
您需要实例化数组,例如:
map = (LinkedHashMap<String, Integer>[]) new LinkedHashMap[5];
虽然您将获得该代码的“未经检查的转化”警告。同时检查this是否存在通用数组创建问题(感谢那些指出它的人)。