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
時,要考慮的排序的問題。