HashTable HashMap TreeMap 區別

 

java爲數據結構中的映射定義了一個接口java.util.Map,而HashMap Hashtable和TreeMap就是它的實現類。Map是將鍵映射到值的對象,一個映射不能包含重複的鍵;每個鍵最多隻能映射一個一個值。

Hashmap 是一個最常用的Map,它根據鍵的HashCode 值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。HashMap最多隻允許一條記錄的鍵爲Null;允許多條記錄的值爲 Null;HashMap不支持線程的同步,即任一時刻可以有多個線程同時寫HashMap;可能會導致數據的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力.

Hashtable 與 HashMap類似,但是主要有6點不同。

1.HashTable的方法是同步的,HashMap未經同步,所以在多線程場合要手動同步HashMap這個區別就像Vector和ArrayList一樣。

2.HashTable不允許null值,key和value都不可以,HashMap允許null值,key和value都可以。HashMap允許 key值只能由一個null值,因爲hashmap如果key值相同,新的key, value將替代舊的。

3.HashTable有一個contains(Object value)功能和containsValue(Object value)功能一樣。

4.HashTable使用Enumeration,HashMap使用Iterator。

5.HashTable中hash數組默認大小是11,增加的方式是 old*2+1。HashMap中hash數組的默認大小是16,而且一定是2的指數。

6.哈希值的使用不同,HashTable直接使用對象的hashCode。

import java.util.Map; 
import java.util.HashMap; 
import java.util.Set; 
import java.util.HashSet;   
import java.util.Iterator;   
import java.util.Hashtable;   
import java.util.TreeMap;   
class  HashMaps   {  
 public static void main(String[] args)   {  
 Map map=new HashMap();  
 map.put(“a”, “aaa”);  
 map.put(“b”, “bbb”);   
 map.put(“c”, “ccc”);   
 map.put(“d”, “ddd”);   
Iterator iterator = map.keySet().iterator();   
while (iterator.hasNext()) {  
 Object key = iterator.next();   
System.out.println(“map.get(key) is :”+map.get(key));   } 
  Hashtable tab=new Hashtable();   tab.put(“a”, “aaa”);  
 tab.put(“b”, “bbb”);  
 tab.put(“c”, “ccc”);  
 tab.put(“d”, “ddd”);   
Iterator iterator_1 = tab.keySet().iterator();  
 while (iterator_1.hasNext()) { 
  Object key = iterator_1.next(); 
  System.out.println(“tab.get(key) is :”+tab.get(key)); 
  }   TreeMap tmp=new TreeMap();  
  tmp.put(“a”, “aaa”); 
  tmp.put(“b”, “bbb”);  
  tmp.put(“c”, “ccc”); 
  tmp.put(“d”, “ddd”); 
  Iterator iterator_2 = tmp.keySet().iterator(); 
  while (iterator_2.hasNext()) {  
  Object key = iterator_2.next(); 
  System.out.println(“tmp.get(key) is :”+tmp.get(key));  
 }   
 }  
 }


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章