c++ map 自定义排序_Java学习笔记:Map集合介绍
在介紹它之前先來看看再API文檔中是如何介紹它的,看圖片:
由圖片可以看出,Map屬于雙列集合,每次可以添加一對數據,并且這兩個數據具有映射關系。
單列集合和雙列集合區別
一、Map繼承體系
1.HashMap:存儲數據采用的哈希表結構,元素的存取順序不能保證一致。由于要保證鍵的唯一、不重復,需要重寫鍵的hashCode()方法、equals()方法。哈希表控制鍵,鍵唯一。
2.LinkedHashMap:HashMap下有個子類LinkedHashMap,存儲數據采用的哈希表結構+鏈表結構。通過鏈表結構可以保證元素的存取順序一致;通過哈希表結構可以保證的鍵的唯一、不重復,需要重寫鍵的hashCode()方法、equals()方法。
3.TreeMap:TreeMap集合和Map相比沒有特有的功能,底層的數據結構是紅黑樹;可以對元素的鍵進行排序,排序方式有兩種:自然排序和比較器排序
4.利弊比較:
Hashtable被HashMap集合取代了 安全的,但是效率比HashMap低
ConcurrentHashMap屬于多線程安全,效率低 比Hashtable效率高
二、Map接口的方法介紹
Map接口中定義了很多方法,常用的如下:
public V put(K key, V value): | 把指定的鍵與指定的值添加到Map集合中。 說明:(1)執行put添加數據的時候,如果新添加的鍵不存在,那么此時直接添加,并返回null(2)執行put添加數據的時候,如果新添加的鍵存在,那么新添加的value覆蓋之前舊的value,并返回舊的value |
public V remove(Object key): | 把指定的鍵 所對應的鍵值對元素 在Map集合中刪除,返回被刪除元素的值。 |
public V get(Object key): | 根據指定的鍵,在Map集合中獲取對應的值。 |
public SetkeySet(): | 獲取Map集合中所有的鍵,存儲到Set集合中。 |
public Set> entrySet(): | 獲取到Map集合中所有的鍵值對對象的集合(Set集合)。說明:該方法表示獲取Map集合中的所有的鍵值對,存放到單列集合Set中,鍵值對屬于Map.Entry類型 |
public boolean containKey(Object key): | 判斷該集合中是否有此鍵。 如果包含返回true,否則返回false |
?int size() | 返回此映射中的鍵-值映射關系數。 集合長度 |
代碼演示:
三、Map集合的遍歷
1.使用keySet方法遍歷(了解)
需要使用的方法:
public V get(Object key): | 根據指定的鍵,在Map集合中獲取對應的值。 |
public SetkeySet(): | 獲取Map集合中所有的鍵,存儲到Set集合中 |
2.使用entrySet方式遍歷Map集合(掌握)
使用方法:
Map接口中的方法:
public Set> entrySet(): 獲取到Map集合中所有的鍵值對對象的集合(Set集合)。
??? 說明:該方法表示獲取Map集合中的所有的鍵值對,存放到單列集合Set中,?? 鍵值對屬于Map.Entry
使用Map.Entry接口中的方法:
K getKey() 返回與此項對應的鍵。
V getValue()? 返回與此項對應的值。
四、Map常用子類
1.HashMap類
HashMap作為最常用集合之一,繼承自Map。JDK8的HashMap實現與JDK7不同,新增了紅黑樹作為底層數據結構,結構變得復雜,效率變得更高。為滿足自身需要,也重新實現了很多Map中的方法。
HashMap類底層是一個哈希表數據結構,控制鍵。要求HashMap鍵位置的對象所屬類必須重寫hashCode和equals方法。
小結:
1.HashMap屬于jdk1.2之后才有的,替換了Hashtable,提高效率
2.底層哈希表數據結構控制鍵,所以要求鍵位置的對象所屬類必須重寫hashCode和equals方法
3.HashMap集合的鍵和值都可以是null,但是鍵位置只能是一個null
2.Hashtable類
Hashtable從jdk1.0就有了,它的安全性較高,但是效率低。底層是哈希表數據結構,控制鍵。該集合的鍵和值不允許是null,而從1.2開始后被HashMap取代了,HashMap效率更高。
代碼演示:
3.LinkedHashMap
底層基于兩個數據結構,分別為哈希表和雙鏈表。哈希表的作用是存儲數據保證數據唯一;雙鏈表的作用為保證數據存儲有序。
代碼演示:
4.TreeMap類
TreeMap底層基于紅黑樹結構,控制鍵,可以對鍵進行排序。具有排序方法看下面的構造方法:
1) TreeMap() 對鍵是大小升序,非自定義類(String Integer)按照大小升序排序
2)TreeMap(Comparator comparator) 根據鍵按照指定規則進行排序,
??? ?????? 參數:comparator屬于自定義比較器接口Comparator類型,具體的排序規則由我們實現該接口的排序方法指定:
??? int?compare(T o1, T o2)?
??? ?????? o1?- o2 升序
??? ?????? o2?- o1 降序
代買演示:
總結
以上是生活随笔為你收集整理的c++ map 自定义排序_Java学习笔记:Map集合介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux服务器配置与管理_服务器维护实
- 下一篇: 给matlab图加图注,matlab学习