Java8加強的Map集合

Map集合簡介數組

  Map用於保存具備映射關係的數據,所以Map集合裏保存着兩組值,一組值用於保存Map裏的key,另一組用於保存Map裏的vlaue,key和value均可以是任何引用類型的數據。對象

Map的key不容許重複,即同一個Map對象的任何兩個key經過equals方法比較老是返回false。索引

  key和value之間存在單向一對一關係,即經過指定的key,總能找到惟一的、肯定的value。從Map中取出數據時,只要給出指定的key,就能夠取出對應的value。接口

  若是把Map裏的全部key放在一塊兒來看,它們就組成了一個set集合(全部的key沒有順序,key與key之間不能重複),實際上Map確實包含了一個keySet()方法,用於返回Map裏rem

全部key組成的Set集合。get

  Map裏key集合Set集合裏元素的存儲形式也很像,Map子類和Set子類在名字上也驚人地類似,好比Set接口下有HashSet、LinkedHashSet、SortedSet(接口)、TreeSet、EnumSet等子接口和實現類,而Map接口下則有HashMap、LinkedHashMap、SortedMap(接口)、TreeMap、EnumMap等子接口和實現類。源碼

  Set和Map之間的關係很是密切。雖然Map中放的元素是key-value對,Set集合中放的元素是單個對象,但若是把key-value對中的value當成key的附庸:key在哪裏,value就跟在哪裏。這樣就能夠像對待Set同樣來對待Map了。事實上,Map提供了一個Entry內部類來封裝key-value對,而計算Entry存儲時則只考慮Entry封裝的key。從Java源碼來看,Java是先實現了Map,而後經過包裝一個全部value都爲null的Map就實現了Set集合。io

  若是把Map裏的全部value放在一塊兒來看,它們又很是相似於一個List:元素與元素之間能夠重複,每一個元素能夠根據索引來查找,只是Map中的索引再也不使用整數值,而是以另外一個table

對象做爲索引。若是須要從List集合中取出元素,則須要提供該元素的數字索引;若是須要從Map中取出元素,則須要提供該元素的key索引。所以,Map有時也被稱爲字典,或關聯數組。Map接口中定義了以下經常使用的方法。List

  void clear():刪除該Map對象中的全部key-value對。

  boolean containsKey(Object key):查詢Map中是否包含指定的key,若是包含則返回true。

  boolean containsValue(Object value):查詢Map中是否包含一個或者多個value,若是包含則返回true。

  Set entrySet():返回Map中包含的key-value對所組成的Set集合,每一個集合元素都是Map.Entry(Entry是Map的內部類)對象。

  Object get(Object key):返回指定key所對應的value;若是此Map中不包含該key,則返回null。

  Boolean isEmpty():查詢該Map是否爲空(即不包含任何key-value對),若是爲空則返回true。

  Set keySet():返回該Map中全部key組成的Set集合。

  Object put(Object key,Object value):添加一個key-value對,若是當前Map中已有一個與該key相等的key-value對,則新的key-value對會覆蓋原來的key-value對。

  void putAll(Map m):將指定Map中的key-value對複製本Map中。

  Object remove(Object key):刪除指定key所對應的key-value對,返回被刪除key所關聯的value,若是該key不存在,則返回null。

  boolean remove(Object key,Object value):這是Java8新增的方法,刪除指定key、value所對應的key-value對。若是從該Map中成功地刪除該key-value對,該方法返回true,不然返回false。

  int size():返回該Map裏的key-value對的個數。

  Collection values():返回該Map裏全部value組成的Collection。

  Map接口提供了大量的實現類,典型實現如HashMap和Hashtable等、HashMap的子類LinkedHashMap,還有SortedMap子接口及該接口的實現類TreeMap,以及WeakHashMap、IdentiHashMap等。下面將詳細介紹Map接口實現類。

  Map中包括一個內部類Entry,該類封裝了一個key-value對。Entry包含以下三個方法。

  Object getKey():返回該Entry裏包含的key值。

  Object getValue():返回該Entry裏包含的value值。

  Object setValue(V value):設置該Entry裏包含的value值,並返回新設置的value值。

  Map集合最典型的用法就是成對添加、刪除key-value對,接下來便可判斷該Map中是否包含指定key,是否包含指定value,也能夠經過Map提供的keySet()方法

獲取全部key組成的集合,進而遍歷Map中全部的key-value對。

相關文章
相關標籤/搜索