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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

c++ map iterator 获取key_Java集合框架——Map接口

發(fā)布時間:2024/9/30 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ map iterator 获取key_Java集合框架——Map接口 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第三階段 JAVA常見對象的學習

集合框架——Map集合

在實際需求中,我們常常會遇到這樣的問題,在諸多的數(shù)據(jù)中,通過其編號來尋找某一些信息,從而進行查看或者修改,例如通過學號查詢學生信息。今天我們所介紹的Map集合就可以很好的幫助我們實現(xiàn)這種需求

(一) 概述及功能

(1) 概述

Map是一種存儲元素對的集合(元素對分別稱作 鍵 和 值 也稱鍵值對)它將鍵映射到值的對象。一個映射不能包含重復的鍵,并且每個鍵最 多只能映射到一個值。

怎么理解呢?
鍵 (key):就是你存的值的編號 值 (value):就是你要存放的數(shù)據(jù)
你可以近似的將鍵理解為下標,值依據(jù)鍵而存儲,每個鍵都有其對應值。這兩者是1、1對應的
但在之前下標是整數(shù),但是Map中鍵可以使任意類型的對象。

Map集合和Collection集合的區(qū)別?

  • Map集合存儲元素是成對出現(xiàn)的,Map集合的鍵是唯一的,值是可重復的
  • Collection集合存儲元素是單獨出現(xiàn)的,Collection的子類Set是唯一的,List是可重復的。
  • Map集合的數(shù)據(jù)結(jié)構(gòu)值針對鍵有效,跟值無關,Collection集合的數(shù)據(jù)結(jié)構(gòu)是針對元素有效

(2) 功能

A:添加功能

//添加元素

B:刪除功能

//移除所有的鍵值對元素

C:判斷功能

//判斷集合是否包含指定的鍵

D:獲取功能

//將map集合中的鍵和值映射關系打包為一個對象

E:長度功能

//返回集合中的鍵值對的對數(shù)

(二) Map集合的遍歷

package

(三) Map及子類總結(jié)

Map(雙列集合)

  • Map集合的數(shù)據(jù)結(jié)構(gòu)僅僅針對鍵有效,與值無關。
  • 存儲的是鍵值對形式的元素,鍵唯一,值可重復

HashMap

  • 底層數(shù)據(jù)結(jié)構(gòu)是哈希表,線程不安全,效率高
  • 哈希表依賴兩個方法:hashCod()和equals()
  • 執(zhí)行順序:
    • 首先判斷hashCode()值是否相同
      • 是:繼續(xù)執(zhí)行equals(),看其返回值
        • 是true:說明元素重復,不添加
        • 是false:就直接添加到集合
      • 否:就直接添加到集合
  • 最終:
  • 自動生成hashCode()和equals()即可

LinkeHashMap

  • 底層數(shù)據(jù)結(jié)構(gòu)是由鏈表和哈希表組成
  • 由鏈表保證元素有序
  • 由哈希表保證元素唯一

Hashtable

  • 底層數(shù)據(jù)結(jié)構(gòu)是哈希表
  • 哈希表依賴兩個......自動生成hashCode()和equals()即可

TreeMap

  • 底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹(是一種自平衡的二叉樹)

如何保證元素唯一性呢?

  • 根據(jù)比較的返回值是否是0來決定

如何保證兩種元素的排序呢?

  • 自然排序(元素具備比較性)
    • 讓元素所屬的類實現(xiàn)comparable接口
  • 比較器排序(集合具備比較性)
    • 讓集合接收一個comparator的實現(xiàn)類對象

可以多層嵌套

HashMap集合嵌套HashMap

HashMap集合嵌套ArrayList

ArrayList集合嵌套HashMap

HashMap<String, ArrayList<String>> hm = new HashMap<String, ArrayList<String>>

1:Hashtable和HashMap的區(qū)別?

Hashtable:線程安全,效率低。不允許null鍵和null值

HashMap:線程不安全,效率高。允許null鍵和null值

?

(其實HashMap就是用來替代Hashtable的,就像ArrayList替代vector一樣)

2:List,Set,Map等接口是否都繼承子Map接口?

List,Set不是繼承自Map接口,它們繼承自Collection接口

Map接口本身就是一個頂層接口

需要排序:TreeMap

不需要排序:HashMap

不知道具體需求:HashMap

(四) 經(jīng)典案例

(1) 統(tǒng)計字符串中字符出現(xiàn)的次數(shù)

import

(2) 模擬斗地主案例

在講解這個案例之前,我們先來了解一個我們下面案例中所需要知道的知識點

Collections 工具類

Collections:是針對集合進行操作的工具類,都是靜態(tài)方法。

面試題:

Collection和Collections的區(qū)別?

Collection:是單列集合的頂層接口,有子接口List和Set。(Map是雙列的)

Collections:是針對集合操作的工具類,有對集合進行排序和二分查找的方法

Collections的靜態(tài)方法

//排序 默認情況下是自然順序。 //斗地主案例代碼

結(jié)尾:

如果內(nèi)容中有什么不足,或者錯誤的地方,歡迎大家給我留言提出意見, 蟹蟹大家 !^_^

如果能幫到你的話,那就來關注我吧!(系列文章均會在公眾號第一時間更新)

在這里的我們素不相識,卻都在為了自己的夢而努力 ?
一個堅持推送原創(chuàng)Java技術的公眾號:理想二旬不止

總結(jié)

以上是生活随笔為你收集整理的c++ map iterator 获取key_Java集合框架——Map接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。