1

アプリケーションで HashMap を使用していますが、null 値 (オブジェクトの空の配列リスト) を持つキー (文字列) を追加する必要がある場合があります。しかし、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

NullPointerExceptionbecause disを取得してnullおり、 への呼び出しでそれを逆参照しようとしていますd.put("key1", a)

dの初期化をに変更することでこれを修正できます

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

nullではなくなったので、 のようdにネイティブのメソッドを使用できます。HashMapd.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 が null の場合 -> NullPointerException ;)

于 2013-10-18T13:23:13.530 に答える
2

最初にそのインスタンスを作成せずに呼び出すことはできませんmap.put。マップはまだ null です。

最初にインスタンス化する必要があります:

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;

そして、要素をnullにしようとします:

d.put("key1", a);

最初に HashMap のインスタンスを宣言する必要があります。

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