[英]When should I use a Hashtable versus a HashMap
這不是關於 我知道Hashtable
和HashMap
之間差異的問題。Hashtable
對象不能接受鍵或值條目的null
值,它是同步集合,並且它使用的內存比HashMap
略少。
我想知道使用Hashtable
而不是HashMap
更合適的場景。
這不是
Hashtable
和HashMap
區別的問題
嗯,這真的...
我想知道使用
Hashtable
而不是HashMap
更合適的場景。
正是當您想要兩者之間的差異時:
HashMap
上使用Collections.synchronizedMap
Hashtable
(相對罕見,幸運的是) 我個人不記得上次遇到這種情況是什么時候 - 我會說在現代 Java 代碼中使用Hashtable
是非常罕見的。
絕不。
Hashtable
是 Java 1 中映射的原始實現。它已被Java Collections Framework 中定義的Map<K,V>
實現取代。 當然, Hashtable
已經被改造以實現Map
但這並不是非常有用。
它的主要問題在於它是同步的。 這意味着它在線程之間共享的任何情況下都會很慢。 ConcurrentHashMap
在這種情況下是更好的選擇。 如果您在單線程上運行,那么未同步的HashMap
是更好的選擇。
InitialContext
我只能想到一個正當理由——當您使用需要它的 API 時,例如JNDI非常惱人的InitialContext
類。
除此之外,我看不出使用Hashtable
充分理由。 您可以使用Collections.synchronizedMap
獲取HashMap
的同步版本,或使用ConcurrentMap
實現,例如ConcurrentHashMap
或ConcurrentSkipListMap
我只在遺留應用程序/庫中看到哈希表。
如果可以,如果需要同步 Map,請使用 ConcurrentHashMap 或 Collections.synchronizedMap。
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ConcurrentHashMap.html
知道何時使用一個類或結構而不是另一個本質上是了解兩者之間的差異,並根據這些差異決定哪一個最適合手頭的問題。
我了解 Hashtable 對象不能接受空值
因此,在需要存儲空值的情況下, Hashtable
將不合適。
此外,在Hashtable
,枚舉不是故障安全的。 因此,如果您需要能夠在枚舉時更改結構的內容,則Hashtable
會更合適。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.