hashtable和hashmap的區(qū)別 hashtable為什么不能允許有null鍵和值而hashmap為什么又允許有?
hashtable為什么不能允許有null鍵和值而hashmap為什么又允許有?HashMap,基于哈希表的map接口的實現(xiàn)。這個實現(xiàn)提供了所有可選的映射操作,并允許空值和空鍵。(除了異步和null之
hashtable為什么不能允許有null鍵和值而hashmap為什么又允許有?
HashMap,基于哈希表的map接口的實現(xiàn)。這個實現(xiàn)提供了所有可選的映射操作,并允許空值和空鍵。(除了異步和null之外,HashMap類與hashtable類基本相同。)這個類不能保證映射的順序,尤其不能保證映射的順序是永久的。這個實現(xiàn)假設(shè)hash函數(shù)在bucket之間正確地分配元素,這可以為基本操作(get和put)提供穩(wěn)定的性能。迭代集合視圖所需的時間與HashMap實例的“容量”(bucket數(shù))及其大?。ㄦI值映射數(shù))成比例。因此,如果迭代性能很重要,不要將初始容量設(shè)置得太高(或負載系數(shù)太低)。
Hashtable,類實現(xiàn)將鍵映射到相應(yīng)值的哈希表。任何非空對象都可以用作鍵或值。為了在哈希表中成功地存儲和獲取對象,作為鍵的對象必須實現(xiàn)hashcode方法和equals方法。
HashTable和HashMap區(qū)別?
1. HashMap支持null鍵和null值;hashtable不支持。這是因為HashMap對null有特殊處理。它將hashcode值null設(shè)置為0,并將其存儲在哈希表的第0個bucket中。
2. HashMap是非線程安全的,HashMap的線程安全方法是map map=集合.synchronziedMap(New HashMap());哈希表是線程安全的
3。HashMap的默認長度是16,擴展是原來的兩倍;hashtable的默認長度是11,擴展是原來的2n1。HashMap繼承abstractmap;hashtable繼承dictionary
4。擴展,HashMap比較并發(fā)HashMap,HashMap vs SparseArray,linkedarray vs ArrayList,ArrayList vs vector