java map

wangzh3發表於2008-02-13

java.util 最常用的集合類之一是Map ,map提供了一個通用的元素儲存方法。 Map 集合類用於儲存元素對(稱作“鍵”和“值”),其中每個鍵對映到一個值。常用到的有hashmap和hashtable。

[@more@]Map 的介面和方法

覆蓋的方法。 我們將這 Object 的這兩個方法覆蓋,以正確比較 Map 物件的等價性。

equals(Object o)比較指定物件與此 Map 的等價性
hashCode()返回此 Map 的雜湊碼

其他方法

clear()從 Map 中刪除所有對映
remove(Object key)從 Map 中刪除鍵和關聯的值
put(Object key, Object value)將指定值與指定鍵相關聯
clear()從 Map 中刪除所有對映
putAll(Map t)將指定 Map 中的所有對映覆制到此 map

如果我們使用putAll,則map可以自動擴充套件大小。如果使用put,建議在建立map的時候使用loadfactor自動擴充套件以提高效率。

檢視 Map

  • 所有鍵值對 — 參見 entrySet()
  • 所有鍵 — 參見 keySet()
  • 所有值 — 參見 values()
  • 訪問元素

    檢索有關 Map 內容的資訊但不更改 Map 內容。

    get(Object key)返回與指定鍵關聯的值
    containsKey(Object key)如果 Map 包含指定鍵的對映,則返回 true
    containsValue(Object value)如果此 Map 將一個或多個鍵對映到指定值,則返回 true
    isEmpty()如果 Map 不包含鍵-值對映,則返回 true
    size()返回 Map 中的鍵-值對映的數目

    key唯一但是value不一定唯一,所以使用containsValue的時候可能效率會較低。

    hash技術

    int hashvalue = (key.hashCode() & 0x7FFFFFFF) % table.length;
    需要考慮和處理hash collision,如果是使用已有的則不需要考慮,如果自己實現hashmap,
    則需要考慮和處理對應的case。
    效率問題:之前使用的時候簡單建立,基本上都沒有初始化大小和負載因子,現在看了一下
    jdk的help才發現有這兩個引數可以在很多時候提高效能。
    在建立map的時候建議使用
    Map userMap = new HashMap();
    來替代
    HashMap userMap = new HashMap();
    這也符合設計模式或者物件導向的理論,只要實現了相同的介面和方法
    只需要在這個建立的地方修改,使用不同的類來建立,其他的呼叫程式碼則無須修改。
    
    
     

    來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/47869/viewspace-999445/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章