Map 使用的是key value 的方式去儲存資料結構,主要可分為
HashMap :主要實作類,底層使用陣列 +單向鏈表 + 紅黑樹 的資料結構進行儲存。LinkedHashMap :為HashMap 的subclass ,差別在於使用雙向鏈表 紀錄元素新增的順序,適合使用在頻繁遍歷map的情況下使用。Hashtable :JDK1.0時使用,現在已經很少在用TreeMap :底層使用紅黑樹 進行資料儲存,依照指定key 的value 進行排序,TreeSet 底層即是使用TreeMap 進行儲存。Properties :是Hashtable 的subclass ,key 和value 都必須是String ,主要用於處理屬性文件。一個key-value 一般會把它稱為entry
Map 中常用的方法
void put(Object key, Object value) :新增一組key-value 到map中。Object put(Object key, Object value) :修改map中對應key 的value 改為參數中的value ,會將舊的value 返回。(💡當map中有相同的key 時,put() 方法也可以當作修改,如果key 使用自定義的類時,需要有equals() 和hashCode() 方法才有辦法進行修改)void putAll(Map m) :將一個map新增至當前的map中,如果這個map中有相同的key 時,會將相同key 的value 修改,跟put() 修改的概念一樣。Object remove(Object key) :將對應的key-value 刪除,會返回被刪除的value 。int size() :返回當前map 的長度。Object get(Object key) :返回對應key 的value
Set keySet() :返回一個set,裡面包含當前map 中所有的key 。Collection values() :返回一個collection,裡面包含當前map 中所有的value 。Set entrySet() :返回一個set,裡面包含當前map 中所有的key-value 。TreeMap :新增資料時key 的類型 必須相同,否則會出現ClassCastException 的錯誤,並且在使用TreeMap 時,要考慮的排序的問題。