hashmap hashtable treemap

Map接口

Map接口儲存一組成對的鍵-值對象,提供key(鍵)到value(值)的映射,Map中的key不要求有序,不允許重複。value同樣不要求有序,但可以重複 。

Entry =Key-Value (鍵值對)

Map接口中鍵和值一一映射. 可以通過鍵來獲取值

1.Map集合裏保存着兩組值:

           一組用於保存Map裏的key

           一組用於保存Map裏的value

2.key和value可是任何引用類型的數據,key和value都可以爲null

3.key不允許重複,即同一個Map對象的任何兩個key通過equals方法比較總是返回false

4.key和value之間存在單向一對一關係,即通過指定的key,總能找到唯一的、確定的value

5.所有的key放在一起來看,它們就組成了一個Set集合(無序、不重複),Map提供了一個keySet()方法用於返回Map所有key組成的Set集合

Map中包括一個內部類:Entry

Entry類封裝了一個key-value對象,Entry包含三個方法

我們可以把Map理解成一個特殊的Set,只該Set裏包含的集合元素是Entry對象,而不是普通的對象,在Map集合中使用 entrySet方法返回一個Entry對象集合

Hashhap

HashMap實現了Map接口,繼承AbstractMap,它是基於哈希表的 Map 接口的實現(保證鍵的唯一性),

以key-value的形式存在


初始容量:表示哈希表中桶的數量,初始容量是創建哈希表時的容量,就是集合的容量

加載因子:哈希表在其容量自動增加之前可以達到多滿的一種尺度,它衡量的是一個散列表的空間的使用程度,負載因子越大表示散列表的裝填程度越高,反之愈小。

 HashMap

HashMap是引用數據類型

通過 new 關鍵字在 Heap 堆中申請空間

保存其中元素的空間,按照hash碼,預設好一個個的空間

這個空間就是 HashBucket(哈希桶)

每個桶有自己的Hash編號


例子:

public staticvoid main(String args[]){ 

        Map<String,String> maps = newHashMap<String,String>();

        maps.put("A", "蘇州");

        maps.put("B", "南京");

        maps.put("C", "無錫");

        for(Map.Entry<String, String>entry:maps.entrySet()){

             System.out.println(entry.getKey()+"=====>"+entry.getValue());

        }

    }

Map集合的遍歷:

      1、通過內部類Entry進行遍歷

      2、通過迭代器進行遍歷,先獲得Entry的Set集合

      3、通過keySet方法獲得鍵的Set集合,通過遍歷鍵取值

      4、通過map.values()獲得所有值,但是不能獲得鍵

Hashtable:是Map接口的另外一個實現類,和HashMap用法類似,亦有區別

Ø  Hashtable出現於JDK1.0,HashTable基於Dictionary類(建議學生課下研究Dictionary,擴大知識面)

Ø  HashMap可以允許存在一個爲null的key和任意個爲null的value,但是HashTable中的key和value都不允許爲null

Ø  Hashtable的方法是同步的,而HashMap的方法不是

  public static void main(String args[]){ 

   Hashtable<String,Object> table = new Hashtable<String, Object>();  

         //添加元素 

         table.put("A", "中國"); 

          table.put("B", "美國"); 

        table.put("C", "俄羅斯"); 

       for(Map.Entry<String,Object> entry:table.entrySet()){

    System.out.println(entry.getKey()+"------------->"+entry.getValue());

        }           

       System.out.println("===================================="); 

         //通過Enumeration來遍歷Hashtable 

         Enumeration<String> enu =table.keys(); 

        while(enu.hasMoreElements()){ 

          String key =enu.nextElement();

              System.out.println("Enumeration:"+table.keys()+"===>"+key+"====>"+table.get(key)); 

       }  }

 

 

Ø  TreeMap 是一個有序的key-value集合,它是通過紅黑樹實現的

Ø  TreeMap 繼承於AbstractMap,所以它是一個Map,即一個key-value集合

Ø  TreeMap 實現了NavigableMap接口,意味着它支持一系列的導航方法,比如返回有序的key集合

Ø  TreeMap 實現了Cloneable接口,意味着它能被克隆

Ø  TreeMap 實現了Java.io.Serializable接口,意味着它支持序列化

 

 

 




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