我在我的应用程序中使用HashMap,有时我需要添加一个带有空值的键(String)(对象的emty数组列表)。但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。有没有其他方法可以轻松解决?
答案 0 :(得分:5)
您收到NullPointerException
,因为d
为null
,并且您尝试通过调用d.put("key1", a)
取消引用它。
您可以通过将d
的初始化更改为
HashMap<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();
现在d
不为空,您可以使用HashMap
的原生方法,例如d.put("key1", a)
。
答案 1 :(得分:4)
Map<String, List<Object[]>> d = new HashMap<String, List<Object[]>>;
List<Object[]> a = new ArrayList<Object[]>();
d.put("key1", a);
如果d为null,那么 - &gt; NullPointerException;)
答案 2 :(得分:2)
首先,如果没有创建它的实例,则无法调用map.put
,您的地图仍为空。
您需要先实例化它:
Map<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();
然后:
d.put("key1", a);
答案 3 :(得分:2)
您写道:
HashMap<String, ArrayList<Object[]>> d = null;
然后你尝试将元素放到null:
d.put("key1", a);
您必须首先声明HashMap的实例:
HashMap<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();