web-dev-qa-db-ja.com

HashMapとNull値?

Null値をHashMapに渡す方法は?
次のコードスニペットは、入力されたオプションで機能します。

HashMap<String, String> options = new HashMap<String, String>();  
options.put("name", "value");
Person person = sample.searchPerson(options);  
System.out.println(Person.getResult().get(o).get(Id));    

だから問題は、null値を渡すためにオプションやメソッドに入力する必要があるものですか?
次のコードを試してみましたが成功しませんでした:

options.put(null, null);  
Person person = sample.searchPerson(null);    

options.put(" ", " ");  
Person person = sample.searchPerson(null);    

options.put("name", " ");  
Person person = sample.searchPerson(null);  

options.put();  
Person person = sample.searchPerson();    
50
Neutron_boy

HashMapはnullキーと値の両方をサポートします

http://docs.Oracle.com/javase/6/docs/api/Java/util/HashMap.html

...およびNULL値とNULLキーを許可します

あなたの問題はおそらく地図そのものではないでしょう。

102
kenor

以下の可能性に注意してください。

1.マップに入力される値には、nullを使用できます。

ただし、複数のnullキーと値を使用すると、nullキーと値のペアが1回だけ使用されます。

Map<String, String> codes = new HashMap<String, String>();

codes.put(null, null);
codes.put(null,null);
codes.put("C1", "Acathan");

for(String key:codes.keySet()){
    System.out.println(key);
    System.out.println(codes.get(key));
}

出力は次のようになります。

null //key  of the 1st entry
null //value of 1st entry
C1
Acathan

2.コードはnullを1回だけ実行します

options.put(null, null);  
Person person = sample.searchPerson(null);   

複数の値をsearchPersonにする場合は、nullメソッドの実装に依存します。それに応じて実装できます

Map<String, String> codes = new HashMap<String, String>();

    codes.put(null, null);
    codes.put("X1",null);
    codes.put("C1", "Acathan");
    codes.put("S1",null);


    for(String key:codes.keySet()){
        System.out.println(key);
        System.out.println(codes.get(key));
    }

出力:

null
null

X1
null
S1
null
C1
Acathan
9
Shuchi Jain

Mapパラメーターを使用してメソッドを呼び出そうとしているようです。したがって、空の人の名前で呼び出すには、適切なアプローチが必要です

HashMap<String, String> options = new HashMap<String, String>();
options.put("name", null);  
Person person = sample.searchPerson(options);

または、このようにすることができます

HashMap<String, String> options = new HashMap<String, String>();
Person person = sample.searchPerson(options);

を使用して

Person person = sample.searchPerson(null);

Nullポインター例外が発生する可能性があります。それはすべてsearchPerson()メソッドの実装に依存します。

3
Ashwin Aditya

Mapにnullの値を持たないのプログラミングの良い習慣です。

null値を持つエントリがある場合、エントリがマップに存在するか、null値が関連付けられているかどうかを判断することはできません。

そのような場合に定数を定義するか(例:String NOT_VALID = "#NA")、またはnull値を持つキーを保存する別のコレクションを作成できます。

詳しくはこちらをご覧ください link .

1
Pritesh Mhatre