75

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();    
4

6 に答える 6

134

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

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html

...そしてnull値とnullキーを許可します

したがって、問題はおそらくマップ自体ではありません。

于 2013-02-26T14:24:56.327 に答える
4

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() メソッドの実装に依存します。

于 2014-11-28T06:09:13.547 に答える
0

Map に値を持たないようnullにすることは、優れたプログラミング手法です。

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

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

詳細については、このリンクを確認してください。

于 2017-06-28T07:24:49.903 に答える
-2

最初のコード スニペットによると問題ないようですが、不適切なプログラミングが原因で同様の動作が発生しました。put 呼び出しの前に、「options」変数が null でないことを確認しましたか?

私は Struts2 (2.3.3) webapp を使用しており、結果を表示するために HashMap を使用しています。実行時 (Action クラスによって初期化されたクラス内):

if(value != null) pdfMap.put("date",value.toString());
else pdfMap.put("date","");

このエラーが発生しました:

Struts Problem Report

Struts has detected an unhandled exception:

Messages:   
File:   aoc/psisclient/samples/PDFValidation.java
Line number:    155
Stacktraces

java.lang.NullPointerException
    aoc.psisclient.samples.PDFValidation.getRevisionsDetail(PDFValidation.java:155)
    aoc.action.signature.PDFUpload.execute(PDFUpload.java:66)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    ...

NullPointerException は put メソッド (行番号 155) を指しているようですが、問題は de Map が以前に初期化されていないことでした。変数が値を設定するメソッドから外れているため、正常にコンパイルされました。

于 2014-02-14T12:18:40.020 に答える
-6

あなたはおそらく次のようにすることができます:

String k = null;
String v = null;
options.put(k,v);
于 2014-05-13T17:54:33.243 に答える