我々はすべてのHashMapが1つのヌルキーと値のペアを可能に知っているように私は、HashMapのについて疑問を持って、私はこのように書いた場合は、ここで私の質問はHashMapは重複を許可しますか?
で、
m.put(null,null);
m.put(null,a);
それが(エラーがスローされますか例外)、またはそれが値を上書きするか、または退却の値は何になりますか?
我々はすべてのHashMapが1つのヌルキーと値のペアを可能に知っているように私は、HashMapのについて疑問を持って、私はこのように書いた場合は、ここで私の質問はHashMapは重複を許可しますか?
で、
m.put(null,null);
m.put(null,a);
それが(エラーがスローされますか例外)、またはそれが値を上書きするか、または退却の値は何になりますか?
意味で重複を許可しません。あなたを追加することはできますが、このキーが既に値を持っているかどうかは気にしません。だから、つのキーため、現時点でそれは黙っnull
キーのvalue
をオーバーライドするだけつの値
があるでしょう。例外なし。
取得しようとすると、null
で最後に挿入された値が返されます。
これは、null
と任意のキーでのみではありません。
はHashMap内の各キーは一意である必要があります
Map m = new HashMap<String, String>();
m.put("1", "a");
m.put("1", "b"); //no exception
System.out.println(m.get("1")); //b
簡単な例を持っています。
「重複キーを追加する」とは、古い値(同じキーの場合はキーが一意でなければならない)は単に置き換えられます。 HashMap.put:
このマップで指定されたキーに指定した値を関連付けます。マップに以前にキーのマッピングが含まれていた場合は、の古い値がに置き換えられます。
キーに関連付けられた以前の値を返します。キーのマッピングがなかった場合はnullを返します。限りヌルとして
:単一のヌルキーが許可されている(キーは一意である必要がありますよう)が、HashMapのは、ヌル値の任意の番号を持つことができ、ヌルキーはNULL値を持つ必要はありません。 documentationあたり:
[.. HashMapの]許可が値と[A]ヌルキーはnull。
ただし、ドキュメントが特定のキー/値のペアまたはnull /「」で無効にする必要がヌル/ nullの程度何氏は述べていません。
コード例:
HashMap<Integer,String> h = new HashMap<Integer,String>();
h.put(null,null);
h.put(null, "a");
System.out.println(h);
出力:
{null=a}
It overrides the value at key null。ハッシュマップのキーは、キーと同じであれば
ハッシュマップのタイプは、そのキーを上書き
map.put("1","1111");
map.put("1","2222");
出力
key:value
1:2222
HashMapの重複キーを許可していませんが、それはスレッドセーフではないですから、それは重複キーを発生する場合があります。 例:
while (true) {
final HashMap<Object, Object> map = new HashMap<Object, Object>(2);
map.put("runTimeType", 1);
map.put("title", 2);
map.put("params", 3);
final AtomicInteger invokeCounter = new AtomicInteger();
for (int i = 0; i < 100; i++) {
new Thread(new Runnable() {
@Override
public void run() {
map.put("formType", invokeCounter.incrementAndGet());
}
}).start();
}
while (invokeCounter.intValue() != 100) {
Thread.sleep(10);
}
if (map.size() > 4) {
// this means you insert two or more formType key to the map
System.out.println(JSONObject.fromObject(map));
}
}
お試しください。 –
CheckoutコレクションAPI。 Nullはキーにとって常に悪い選択です。だからあなたがしたいことをチェックしてください。 2つの等しいキーの場合、最初のonの値は現在の値に置き換えられます。 – Diversity
確認:http://stackoverflow.com/questions/1669885/what-happens-when-a-duplicate-key-is-put-into-a-hashmap – Diversity