c++ map iterator 获取key_Java集合框架——Map接口
第三階段 JAVA常見對象的學習
集合框架——Map集合
在實際需求中,我們常常會遇到這樣的問題,在諸多的數據中,通過其編號來尋找某一些信息,從而進行查看或者修改,例如通過學號查詢學生信息。今天我們所介紹的Map集合就可以很好的幫助我們實現這種需求(一) 概述及功能
(1) 概述
Map是一種存儲元素對的集合(元素對分別稱作 鍵 和 值 也稱鍵值對)它將鍵映射到值的對象。一個映射不能包含重復的鍵,并且每個鍵最 多只能映射到一個值。
怎么理解呢?鍵 (key):就是你存的值的編號 值 (value):就是你要存放的數據
你可以近似的將鍵理解為下標,值依據鍵而存儲,每個鍵都有其對應值。這兩者是1、1對應的
但在之前下標是整數,但是Map中鍵可以使任意類型的對象。
Map集合和Collection集合的區別?
- Map集合存儲元素是成對出現的,Map集合的鍵是唯一的,值是可重復的
- Collection集合存儲元素是單獨出現的,Collection的子類Set是唯一的,List是可重復的。
- Map集合的數據結構值針對鍵有效,跟值無關,Collection集合的數據結構是針對元素有效
(2) 功能
A:添加功能
//添加元素B:刪除功能
//移除所有的鍵值對元素C:判斷功能
//判斷集合是否包含指定的鍵D:獲取功能
//將map集合中的鍵和值映射關系打包為一個對象E:長度功能
//返回集合中的鍵值對的對數(二) Map集合的遍歷
package(三) Map及子類總結
Map(雙列集合)
- Map集合的數據結構僅僅針對鍵有效,與值無關。
- 存儲的是鍵值對形式的元素,鍵唯一,值可重復
HashMap
- 底層數據結構是哈希表,線程不安全,效率高
- 哈希表依賴兩個方法:hashCod()和equals()
- 執行順序:
- 首先判斷hashCode()值是否相同
- 是:繼續執行equals(),看其返回值
- 是true:說明元素重復,不添加
- 是false:就直接添加到集合
- 是:繼續執行equals(),看其返回值
- 首先判斷hashCode()值是否相同
- 否:就直接添加到集合
- 最終:
- 自動生成hashCode()和equals()即可
LinkeHashMap
- 底層數據結構是由鏈表和哈希表組成
- 由鏈表保證元素有序
- 由哈希表保證元素唯一
Hashtable
- 底層數據結構是哈希表
- 哈希表依賴兩個......自動生成hashCode()和equals()即可
TreeMap
- 底層數據結構是紅黑樹(是一種自平衡的二叉樹)
如何保證元素唯一性呢?
- 根據比較的返回值是否是0來決定
如何保證兩種元素的排序呢?
- 自然排序(元素具備比較性)
- 讓元素所屬的類實現comparable接口
- 比較器排序(集合具備比較性)
- 讓集合接收一個comparator的實現類對象
可以多層嵌套
HashMap集合嵌套HashMap
HashMap集合嵌套ArrayList
ArrayList集合嵌套HashMap
HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>
1:Hashtable和HashMap的區別?
Hashtable:線程安全,效率低。不允許null鍵和null值
HashMap:線程不安全,效率高。允許null鍵和null值
?
(其實HashMap就是用來替代Hashtable的,就像ArrayList替代vector一樣)
2:List,Set,Map等接口是否都繼承子Map接口?
List,Set不是繼承自Map接口,它們繼承自Collection接口
Map接口本身就是一個頂層接口
需要排序:TreeMap
不需要排序:HashMap
不知道具體需求:HashMap
(四) 經典案例
(1) 統計字符串中字符出現的次數
import(2) 模擬斗地主案例
在講解這個案例之前,我們先來了解一個我們下面案例中所需要知道的知識點Collections 工具類
Collections:是針對集合進行操作的工具類,都是靜態方法。
面試題:
Collection和Collections的區別?
Collection:是單列集合的頂層接口,有子接口List和Set。(Map是雙列的)
Collections:是針對集合操作的工具類,有對集合進行排序和二分查找的方法
Collections的靜態方法
//排序 默認情況下是自然順序。 //斗地主案例代碼結尾:
如果內容中有什么不足,或者錯誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^
如果能幫到你的話,那就來關注我吧!(系列文章均會在公眾號第一時間更新)
在這里的我們素不相識,卻都在為了自己的夢而努力 ?一個堅持推送原創Java技術的公眾號:理想二旬不止
總結
以上是生活随笔為你收集整理的c++ map iterator 获取key_Java集合框架——Map接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux c 编程 pdf_C/C++
- 下一篇: python列表使用技巧与方法_Pyth