HashMap和Hashtable的區(qū)別
導(dǎo)讀:
1 HashMap不是線程安全的
HashMap是map接口的子類,是將鍵映射到值的對(duì)象贾漏,其中鍵和值都是對(duì)象,并且不能包含重復(fù)鍵藕筋,但可以包含重復(fù)值纵散。HashMap允許null key和null value,而hashtable不允許隐圾。
2?? HashTable是線程安全伍掀。
HashMap是Hashtable的輕量級(jí)實(shí)現(xiàn)(非線程安全的實(shí)現(xiàn)),他們都完成了Map接口暇藏,主要區(qū)別在于HashMap允許空(null)鍵值(key),由于非線程安全硕盹,效率上可能高于Hashtable。
HashMap允許將null作為一個(gè)entry的key或者value叨咖,而Hashtable不允許。 HashMap把Hashtable的contains方法去掉了啊胶,改成containsvalue和containsKey甸各。因?yàn)閏ontains方法容易讓人引起誤解。 Hashtable繼承自Dictionary類焰坪,而HashMap是Java1.2引進(jìn)的Map interface的一個(gè)實(shí)現(xiàn)趣倾。 最大的不同是,Hashtable的方法是Synchronize的某饰,而HashMap不是儒恋,在多個(gè)線程訪問(wèn)Hashtable時(shí),不需要自己為它的方法實(shí)現(xiàn)同步黔漂,而HashMap 就必須為之提供外同步诫尽。 Hashtable和HashMap采用的hash/rehash算法都大概一樣,所以性能不會(huì)有很大的差