0

我正在尝试实现一个 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.擦除提取(),2.表->数组

4

2 回答 2

2

我不知道你的extracted()方法试图做什么。你得到 aNullPointerException因为你正在传递mapextracted然后你立即返回它。在您的示例中,您传入null然后返回它。您无法在空数组上找到第 i个下标(或任何下标)。

而不是一个数组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];

然而,这会给你警告。

于 2010-11-08T23:02:21.823 回答
0
map[i] = new LinkedHashMap<String, Integer>();

这将导致 NPE,因为您从不初始化 map,或者更确切地说,您将其显式初始化为 NULL:

LinkedHashMap<String, Integer>[] map = null;

编辑:

您需要实例化数组,例如:

map = (LinkedHashMap<String, Integer>[]) new LinkedHashMap[5];

尽管您会收到带有该代码的“未经检查的转换”警告。还要检查这个通用数组创建问题(感谢那些指出它的人)。

于 2010-11-08T23:07:46.923 回答