hashmap為什么用紅黑樹 hashtable實現(xiàn)了哪個接口?
hashtable實現(xiàn)了哪個接口?哈希表和哈希映射之間的區(qū)別:1。Hashtable是dictionary的子類,HashMap是map接口的實現(xiàn)類;2。hashtable中的方法是同步的,而Hash
hashtable實現(xiàn)了哪個接口?
哈希表和哈希映射之間的區(qū)別:
1。Hashtable是dictionary的子類,HashMap是map接口的實現(xiàn)類;
2。hashtable中的方法是同步的,而HashMap中的方法默認是異步的。也就是說,在多線程應(yīng)用程序中,hashtable可以安全地使用,不需要特殊的操作;對于HashMap,需要額外的操作,但是HashMap的同步問題可以通過一個靜態(tài)的集合方法來解決:map集合.synchronizedMap(Map m)此方法返回一個同步映射,它封裝了底層HashMap的所有方法,使得底層HashMap即使在多線程環(huán)境中也是安全的。在HashMap中,null可以用作鍵,并且只有一個這樣的鍵;一個或多個鍵可以具有對應(yīng)的null值。當get()方法返回一個null值時,表示HashMap中沒有鍵。這個鍵還可以指示對應(yīng)于這個鍵的值為null。因此,在HashMap中,我們不能使用get()方法來確定HashMap中是否有鍵,而應(yīng)該使用containskey()方法來確定
1。鍵和值都不能為null,這是線程安全的。實現(xiàn)線程安全的方法是在修改數(shù)據(jù)時鎖定整個哈希表,效率很低
2。初始大小為11,展開:newsize=oldsize*21
1??梢源鎯真I和空值,但線程不安全
2。初始大小是16,擴展:newsize=oldsize*2,大小必須是2的n次方
哈希表是線程安全的,HashMap是非線程安全的。Hashtable是基于舊的dictionary類,HashMap是在引入map接口后對java1.2的重新實現(xiàn)。哈希表方法,鎖同步,可用于多線程環(huán)境。HashMap需要程序員提供同步,以便它在多線程中運行。常用的方法是使用collections類的static synchronizedmap()方法來創(chuàng)建線程安全映射對象或使用并發(fā)HashMap。