日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c++ map 自定义排序_Java学习笔记:Map集合介绍

發布時間:2024/7/19 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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集合介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。