1

我在我的应用程序中使用 HashMap,有时我需要添加一个带有空值的键(字符串)(对象的空数组列表)。但是 Netbeans 7.4 说:

Exception in thread "main" java.lang.NullPointerException
    at test.Version.main(Version.java:35)
Java Result: 1

到这段代码:

        HashMap<String, ArrayList<Object[]>> d = null;

        ArrayList<Object[]> a;
        a = new ArrayList<>();

        d.put("key1", a);

我不想使用 MultiMap。有没有其他方法可以轻松解决?

4

4 回答 4

5

你得到一个NullPointerException因为dis null,你尝试通过调用来取消引用它d.put("key1", a).

您可以通过将初始化更改为d来解决此问题

HashMap<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();

现在它d不为空了,你可以使用原生的方法HashMap,比如d.put("key1", a).

于 2013-10-18T13:22:04.850 回答
4
Map<String, List<Object[]>> d = new HashMap<String, List<Object[]>>;
List<Object[]> a = new ArrayList<Object[]>();
d.put("key1", a);

如果 d 为空,则 -> NullPointerException ;)

于 2013-10-18T13:23:13.530 回答
2

你不能在map.put不创建它的实例的情况下调用,你的地图仍然是空的。

您需要先实例化它:

Map<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();

接着:

d.put("key1", a);
于 2013-10-18T13:23:08.793 回答
2

你写了:

HashMap<String, ArrayList<Object[]>> d = null;

然后您尝试将元素设置为空:

d.put("key1", a);

您必须首先声明 HashMap 的实例:

 HashMap<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();
于 2013-10-18T13:26:28.220 回答