1. 程式人生 > >Java基礎之Map

Java基礎之Map

一、Map集合特點

Collection存放的是:一個一個的資料
Map存放的是:一對兒一對兒的資料
**特點:** 
1. 鍵不能重複
2. 值可以重複
3. 可以根據鍵找到值。

二、使用Map集合新增方法儲存資料

public V put(K key, V value):新增一個鍵值對,返回被替換掉的本來的value值。

三、使用“鍵找值”的方式遍歷Map集合

  1. 首先拿到所有的鍵:keySet方法
  2. 根據每一個鍵找到對應的值:get方法

四、使用“鍵值對”的方式遍歷Map集合

  1. 直接拿到所有的鍵值對:entrySet
  2. 拿到鍵:getKey
  3. 拿到值:getValue

五、使用HashMap儲存自定義鍵值對的資料

  1. 如果自定義的類作為value使用,沒有要求。
  2. 如果自定義的類作為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異常。