Ich benutze HashMap in meiner Anwendung und manchmal muss ich einen Schlüssel (String) mit einem Nullwert (emty array list of objects) hinzufügen. Aber Netbeans 7.4 sagt:
Exception in thread "main" java.lang.NullPointerException
at test.Version.main(Version.java:35)
Java Result: 1
zu diesem Code:
HashMap<String, ArrayList<Object[]>> d = null;
ArrayList<Object[]> a;
a = new ArrayList<>();
d.put("key1", a);
Ich möchte keine MultiMap verwenden. Gibt es einen anderen Weg, um es leicht zu lösen?
Antworten:
4 für die Antwort № 1Map<String, List<Object[]>> d = new HashMap<String, List<Object[]>>;
List<Object[]> a = new ArrayList<Object[]>();
d.put("key1", a);
Wenn d null ist, dann -> NullPointerException;)
5 für die Antwort № 2
Du bekommst ein NullPointerException
weil d
ist null
und Sie versuchen es mit Ihrem Anruf an zu verwerfen d.put("key1", a)
.
Sie können dies beheben, indem Sie Ihre Initialisierung von ändern d
zu
HashMap<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();
Nun das d
isn "t null, können Sie die Methoden native zu verwenden HashMap
, mögen d.put("key1", a)
.
2 für die Antwort № 3
Du kannst nicht anrufen map.put
ohne zuerst eine Instanz davon zu erstellen, ist Ihre Karte immer noch null.
Sie müssen es zuerst instanziieren:
Map<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();
und dann:
d.put("key1", a);
2 für die Antwort № 4
Sie schrieben:
HashMap<String, ArrayList<Object[]>> d = null;
und dann versuchst du, element auf null zu setzen:
d.put("key1", a);
Sie müssen zuerst die Instanz von HashMap deklarieren:
HashMap<String, ArrayList<Object[]>> d = new HashMap<String, ArrayList<Object[]>>();