Java基礎之Map
阿新 • • 發佈:2018-11-26
一、Map集合特點
Collection存放的是:一個一個的資料
Map存放的是:一對兒一對兒的資料
**特點:**
1. 鍵不能重複
2. 值可以重複
3. 可以根據鍵找到值。
二、使用Map集合新增方法儲存資料
public V put(K key, V value):新增一個鍵值對,返回被替換掉的本來的value值。
三、使用“鍵找值”的方式遍歷Map集合
- 首先拿到所有的鍵:keySet方法
- 根據每一個鍵找到對應的值:get方法
四、使用“鍵值對”的方式遍歷Map集合
- 直接拿到所有的鍵值對:entrySet
- 拿到鍵:getKey
- 拿到值:getValue
五、使用HashMap儲存自定義鍵值對的資料
- 如果自定義的類作為value使用,沒有要求。
- 如果自定義的類作為key使用,必須同時覆蓋重寫equals和hashCode方法。
六、常用的介面實現類:
(1)HashMap:底層有雜湊表,查詢so快,HashSet底層就是在複用HashMap。
(2)LinkedHashMap:是HashMap的子類,速度也挺快,但額外還有連結串列,維護先後順序。
七、常用方法:
public V put(K key, V value) : 把指定的鍵與指定的值新增到Map集合中。
public V remove(Object key) : 把指定的鍵 所對應的鍵值對元素 在Map集合中刪除,返回被刪除元素的
值。
public V get(Object key) 根據指定的鍵,在Map集合中獲取對應的值。
public Set<K> keySet() : 獲取Map集合中所有的鍵,儲存到Set集合中。
public Set<Map.Entry<K,V>> entrySet() : 獲取到Map集合中所有的鍵值對物件的集合(Set集合)。
tips:
(1)使用put方法時,若指定的鍵(key)在集合中沒有,則沒有這個鍵對應的值,返回null,並把指定的鍵值新增到集合中;若指定的鍵(key)在集合中存在,則返回值為集合中鍵對應的值(該值為替換前的值),並把指定鍵所對應的值,替換成指定的新值。
(2)Map集合不能直接使用迭代器或者foreach進行遍歷,因為Map並不是Collection的子介面,但是轉成Set之後就可以使用了。
(3)JDK9對集合新增的優化:
Java 9,添加了幾種集合工廠方法,更方便建立少量元素的集合、map例項。新的List、Set、Map的靜態工廠方法可以更方便地建立集合的不可變例項。
注:
1:of()方法只是Map,List,Set這三個介面的靜態方法,其父類介面和子類實現並沒有這類方法,比如HashSet,ArrayList等待;
2:返回的集合是不可變的,如果嘗試改變,則會發生UnsupportedOerationException異常;
3:對於Set來說,若中間有重複的,將會發生IllegalArgumentException異常。