1. 程式人生 > >Map介面實現類HashMap、Map.Entry介面

Map介面實現類HashMap、Map.Entry介面

來談談集合中的Map介面,它常用的實現類為HashMap。

這裡寫圖片描述

Map介面

  • 除了類集,Java 2還在java.util中增加了對映。 對映(map)是一個儲存關鍵字和值的關聯 或者說是關鍵字/值對的物件。給定一個關 鍵字,可以得到它的值。關鍵字和值都是 物件。關鍵字必須是唯一的。但值是可以 重複的。有些對映可以接收null關鍵字和 null值。而有的則不行
  • Map介面對映唯一關鍵字到值。關鍵字(key)是 以後用於檢索值的物件。給定一個關鍵字和一個 值,可以儲存這個值到一個Map物件中。當這個 值被儲存以後,就可以使用它的關鍵字來檢索它。 當呼叫的對映中沒有項存在時,其中的幾種方法 會引發一個NoSuchElementException異常。而當對 象與對映中的元素不相容時,引發一個 ClassCastException異常。如果試圖使用對映不允 許使用的null物件時,則引發一個 NullPointerException異常。當試圖改變一個不允 許修改的對映時,則引發一個 UnsupportedOperationException異常
  • 對映迴圈使用兩個基本操作:get( )和put( )。使用 put( )方法可以將一個指定了關鍵字和值的值加入 對映。為了得到值,可以通過將關鍵字作為引數 來呼叫get( )方法。呼叫返回該值。
  • 對映不是類集,但可以獲得對映的類集“檢視”。 為了實現這種功能,可以使用entrySet( )方法,它 返回一個包含了對映中元素的集合(Set)。為了 得到關鍵字的類集“檢視”,可以使用keySet( ) 方法,返回一個Set集合不可以重複。為了得到值的類集“檢視”,可以使用 values( )方法,返回一個Collection集合,可以重複。類集“檢視”是將對映整合到類集 框架內的手段
import java.util
.Iterator; import java.util.Set; public class MapTest3 { public static void main(String[] args) { HashMap map = new HashMap(); map.put("a", "aa"); map.put("b", "bb"); map.put("c", "cc"); map.put("d", "dd"); map.put("e", "ee"); System.out
.println(map); Set set = map.keySet(); for(Iterator iter = set.iterator(); iter.hasNext();) { String key = (String)iter.next(); String value = (String)map.get(key); System.out.println(key + "=" + value); } } }
a=aa
b=bb
c=cc
d=dd
e=ee

遍歷Map的兩種方式,一種是直接列印輸出,另一種是利用Set集合中的iterator();方法,首先呼叫Map的keySet()方法返回一個Set集合,通過Set集合中key的值可以得到value的值。

HashMap

HashMap類使用散列表實現Map介面。這允 許一些基本操作如get( )和put( )的執行時間 保持恆定,即便對大型集合,也是這樣的 下面的建構函式定義為: - HashMap( ) - HashMap(Map m) - HashMap(int capacity) - HashMap(int capacity, float fillRatio)

第一種形式構造一個預設的雜湊對映。 第二種形式用m的元素初始化雜湊對映。 第三種形式將雜湊對映的容量初始化為 capacity。 第四種形式用它的引數同時初始化雜湊映 射的容量和填充比。容量和填充比的含義 與前面介紹的HashSet中的容量和填充比相同。 HashMap實現Map並擴充套件AbstractMap。它 本身並沒有增加任何新的方法 應該注意的是雜湊對映並不保證它的元素 的順序。因此,元素加入雜湊對映的順序 並不一定是它們被迭代函式讀出的順序

Map.Entry

Map.Entry介面使得可以操作對映的輸入。 回想由Map介面說明的entrySet( )方法,調 用該方法返回一個包含對映輸入的集合 (Set)。這些集合元素的每一個都是一個 Map.Entry物件

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapTest5
{
    public static void main(String[] args)
    {
        HashMap map = new HashMap();

        map.put("a", "aa");
        map.put("b", "bb");
        map.put("c", "cc");
        map.put("d", "dd");

        Set set = map.entrySet();

        for(Iterator iter = set.iterator(); iter.hasNext();)
        {
            Map.Entry entry = (Map.Entry)iter.next();

            String key = (String)entry.getKey();
            String value = (String)entry.getValue();

            System.out.println(key + " : " + value);
        }
    }
}
a : aa
b : bb
c : cc
d : dd