成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何利用HashMap實(shí)現(xiàn)一個(gè)遍歷功能

這篇文章給大家介紹如何利用HashMap實(shí)現(xiàn)一個(gè)遍歷功能,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

創(chuàng)新互聯(lián)主營(yíng)海湖新網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開發(fā),海湖新h5重慶小程序開發(fā)搭建,海湖新網(wǎng)站營(yíng)銷推廣歡迎海湖新等地區(qū)企業(yè)咨詢

map的幾種遍歷方式:

Map< String, String> map = new HashMap<>();

 map.put("aa", "@sohu.com");

 map.put("bb","@163.com");

 map.put("cc", "@sina.com");

 System.out.println("普通的遍歷方法,通過(guò)Map.keySet遍歷key和value");//普通使用,二次取值

 for (String key : map.keySet()) {

  System.out.println("key= "+key+" and value= "+map.get(key));

 }

 System.out.println("通過(guò)Map.entrySet使用iterator遍歷key和value:");

 Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();

 while(it.hasNext()){

  Map.Entry<String, String> entry = it.next();

  System.out.println("key= "+entry.getKey()+" and value= "+entry.getValue());

 }

 System.out.println("通過(guò)Map.entrySet遍歷key和value"); //推薦這種,特別是容量大的時(shí)候

 for(Map.Entry<String, String> entry : map.entrySet()){

  System.out.println("key= "+entry.getKey()+" and value= "+entry.getValue());

 }
??System.out.println(“通過(guò)Map.values()遍歷所有的value,但不能遍歷key”);

 for(String v : map.values()){

  System.out.println("value = "+v);

 }

HashMap和Hashtable的聯(lián)系和區(qū)別

實(shí)現(xiàn)原理相同,功能相同,底層都是哈希表結(jié)構(gòu),查詢速度快,在很多情況下可以互用,早期的版本一般都是安全的。

HashMap和Hashtable都實(shí)現(xiàn)了Map接口,但決定用哪一個(gè)之前先要弄清楚它們之間的分別。主要的區(qū)別有:線程安全性,同步(synchronization),以及速度。

HashMap幾乎可以等價(jià)于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受為null的鍵值(key)和值(value),而Hashtable則不行)。

HashMap是非synchronized,而Hashtable是synchronized,這意味著Hashtable是線程安全的,多個(gè)線程可以共享一個(gè)Hashtable;而如果沒(méi)有正確的同步的話,多個(gè)線程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的擴(kuò)展性更好。

另一個(gè)區(qū)別是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以當(dāng)有其它線程改變了HashMap的結(jié)構(gòu)(增加或者移除元素),將會(huì)拋出ConcurrentModificationException,但迭代器本身的remove()方法移除元素則不會(huì)拋出ConcurrentModificationException異常。但這并不是一個(gè)一定發(fā)生的行為,要看JVM。這條同樣也是Enumeration和Iterator的區(qū)別。

由于Hashtable是線程安全的也是synchronized,所以在單線程環(huán)境下它比HashMap要慢。如果你不需要同步,只需要單一線程,那么使用HashMap性能要好過(guò)Hashtable。

HashMap不能保證隨著時(shí)間的推移Map中的元素次序是不變的。

hashmap的特點(diǎn)

HashMap是map接口的子類,是將鍵映射到值的對(duì)象,其中鍵和值都是對(duì)象,不是線程安全的

hashMap用hash表來(lái)存儲(chǔ)map的鍵

key是無(wú)序唯一,可以有一個(gè)為null

value無(wú)序不唯一,可以有對(duì)個(gè)null

linkedHashMap使用hash表存儲(chǔ)map中的鍵,并且使用linked雙向鏈表管理順序

我們用的最多的是HashMap,在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。如果需要輸出的順序和輸入的相同,那么用LinkedHashMap 可以實(shí)現(xiàn),它還可以按讀取順序來(lái)排列.

HashMap是一個(gè)最常用的Map,它根據(jù)鍵的hashCode值存儲(chǔ)數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問(wèn)速度。HashMap最多只允許一條記錄的鍵為NULL,允許多條記錄的值為NULL。 HashMap不支持線程同步,即任一時(shí)刻可以有多個(gè)線程同時(shí)寫HashMap,可能會(huì)導(dǎo)致數(shù)據(jù)的不一致性。

如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。LinkedHashMap保存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時(shí),先得到的記錄肯定是先插入的。

HashMap可以通過(guò)下面的語(yǔ)句進(jìn)行同步:

Map m = Collections.synchronizeMap(hashMap);

幾大常用集合的效率對(duì)比

如何利用HashMap實(shí)現(xiàn)一個(gè)遍歷功能

關(guān)于如何利用HashMap實(shí)現(xiàn)一個(gè)遍歷功能就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站標(biāo)題:如何利用HashMap實(shí)現(xiàn)一個(gè)遍歷功能
鏈接分享:http://jinyejixie.com/article6/iiedig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序做網(wǎng)站、小程序開發(fā)、品牌網(wǎng)站制作、面包屑導(dǎo)航、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
亳州市| 康保县| 云南省| 巫溪县| 绩溪县| 张家港市| 津南区| 闽清县| 临朐县| 威远县| 湟中县| 南江县| 武义县| 忻城县| 安龙县| 阳泉市| 利津县| 钦州市| 涞水县| 合山市| 宣汉县| 巨鹿县| 长葛市| 华阴市| 宜春市| 崇仁县| 临高县| 呈贡县| 武宣县| 邵武市| 东城区| 巫溪县| 抚顺县| 安图县| 察哈| 勐海县| 泾阳县| 钟祥市| 庆安县| 阿勒泰市| 神池县|