2017-09-03 88 views
0

爲什麼HashMap在java中包含單個null值?爲什麼HashMap在java中包含單個null值?

我在面試中問過爲什麼HashMap允許空值。我找到了一篇描述HashMap實現的文章。但不顯示爲什麼它只包含null。這背後的原因是什麼,爲什麼Designer設計包含Null。 從Oracle數據源...

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 

基於哈希表的Map接口的。該實現提供了所有可選的映射操作,並允許使用空值和空鍵。 (HashMap類大致相當於Hashtable的

http://docs.oracle.com/javase/6/docs/api/java/util/HashMap.html 
but why HashMap allows only single Null value ? 
+1

有沒有其他的關鍵是「允許」不止一次? ;) – alfasin

+0

但爲什麼爲空,它應該是空白的。 –

+0

什麼應該是「空白」? – luk2302

回答

0

我們可以推測,HashMap允許null鍵和null值,因爲它這樣做是有益的。或者,從另一個側面,也不會帶來多大的附加值禁止空值。

HashMap允許只有一個null關鍵,因爲Map S IN一般不支持重複鍵。

+0

是否爲null,如果是,如何? – shiv

+0

@shiv當然不是。你不能有重複的'null'鍵,因爲你不能有任何重複的鍵。 – lexicore

0

哈希表(HashMap的前身)並沒有讓空這在你需要一個映射的情況下,你需要一個皮塔來存儲鍵值對,其值爲null,因爲試圖將該導致設置爲NullPointerException。

您最終創建了一個設置爲值的private final static Object NULL,每次設置或檢索值時都必須檢查空值/代表值並相應地更改它。

允許爲null的HashMap值得高度讚賞,因爲這一點。

相關問題