您好,登錄后才能下訂單哦!
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
訪問元素
檢索有關 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();
這也符合設計模式或者面向對象的理論,只要實現了相同的接口和方法
只需要在這個創建的地方修改,使用不同的類來創建,其他的調用代碼則無須修改。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。