中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中什么是Map集合

發布時間:2021-12-30 15:08:27 來源:億速云 閱讀:153 作者:小新 欄目:編程語言

小編給大家分享一下Java中什么是Map集合,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一、什么是Map

不同于List單列的線性結構,Java中的Map提供的是一種雙列映射的存儲集合,它能夠提供一對一的數據處理能力,雙列中的第一列我們稱為key,第二列就是value,一個key只能夠在一個Map中出現最多一次,通過一個key能夠獲取Map中唯一一個與之對應的value值,正是它的這種一對一映射的數據處理關系,在實際應用中可以通過一個key快速定位到對應的value。

Map的三個特點:

  1. 包含鍵值對

  2. 鍵唯一

  3. 鍵對應的值唯一

二、Map集合常用的遍歷方式

遍歷Map集合的常用方式有三種:

使用keySet的方式

使用entrySet的方式

使用values()取值的方式

這三種方式中,都有對應的for循環遍歷和Iterator遍歷的方式取值。

keySet是鍵的集合,Set里面的類型即key的類型;

entrySet是鍵-值對的集合,Set里面的類型是Map.Entry,Entry是一個鍵-值對;

keySet():迭代后只能通過get()取key;

entrySet():迭代后可以e.getKey(),e.getValue()取key和value,返回的是Entry接口;

三、遍歷的性能對比

for each與顯示調用Iterator等價,除了第三種方式(for each map.keySet()),再調用get獲取方式外,其他三種方式性能相當。本例還是hash值散列較好的情況,若散列算法較差,第三種方式會更加耗時。

1、在數據元素的數量比較大時,entrySet()方式的遍歷效率快于keySet(),有兩個原因 :

(1)一個原因是keySet相當于遍歷了2次,一次是對key的Set集合的遍歷,二次是每次遍歷過程都要通過key和map.get(key)來獲取value值。

(2)第二個原因是map.get(key)的時候,底層是根據key的hashCode值經過哈希算法得到一個hash值,然后作為索引映射到對應的table數組的索引位置,這是一次密集型計算,很耗費CPU,如果有大量的元素,則會使CPU使用率飆升,影響響應速度,而entrySet()返回的set里面的元素都是Map.Enpty類型,key和value就是這個類的一個屬性,entry.getKey()和entry.getValue()效率肯定很高。

2、不過,在數據元素的數量比較小的情況小,keySet()方式的遍歷效率快于entrySet()。

3、values()是返回Map的所有value的集合的Collection,只能遍歷到value,很難遍歷到key,所以一般不用,如果當我們只需要取得value值時,采用values來遍歷效率更高。

4、從上面的幾種方式的for循環遍歷和Iterator遍歷的方式耗時結果來看,Iterator遍歷的效率會比for循環效率更快一點。

以上是“Java中什么是Map集合”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜鼓县| 吉林市| 如东县| 夏津县| 信丰县| 双辽市| 托里县| 芦溪县| 固安县| 名山县| 报价| 耒阳市| 青河县| 万安县| 彭州市| 红河县| 武威市| 阿巴嘎旗| 贵港市| 留坝县| 道孚县| 赣榆县| 军事| 濉溪县| 麻栗坡县| 九寨沟县| 安多县| 永川市| 双牌县| 铜陵市| 桃源县| 新蔡县| 库尔勒市| 县级市| 榕江县| 广水市| 高碑店市| 阳原县| 色达县| 栾城县| 淮阳县|