最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于HashMap遍歷和使用方法(詳解)

 更新時間:2017年08月09日 08:56:50   投稿:jingxian  
下面小編就為大家?guī)硪黄贖ashMap遍歷和使用方法(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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("普通的遍歷方法,通過Map.keySet遍歷key和value");//普通使用,二次取值

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

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

 }

 System.out.println("通過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("通過Map.entrySet遍歷key和value"); //推薦這種,特別是容量大的時候

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

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

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

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

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

 }

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

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

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

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

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

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

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

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

hashmap的特點

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

hashMap用hash表來存儲map的鍵

  key是無序唯一,可以有一個為null

  value無序不唯一,可以有對個null

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

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

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

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

HashMap可以通過下面的語句進行同步:

Map m = Collections.synchronizeMap(hashMap);

幾大常用集合的效率對比

以上這篇基于HashMap遍歷和使用方法(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java線程并發(fā)cyclicbarrier類使用示例

    java線程并發(fā)cyclicbarrier類使用示例

    CyclicBarrier類似于CountDownLatch也是個計數(shù)器,不同的是CyclicBarrier數(shù)的是調(diào)用了CyclicBarrier.await()進入等待的線程數(shù),當(dāng)線程數(shù)達到了CyclicBarrier初始時規(guī)定的數(shù)目時,所有進入等待狀態(tài)的線程被喚醒并繼續(xù),下面使用示例學(xué)習(xí)他的使用方法
    2014-01-01
  • AOP之事務(wù)管理<aop:advisor>的兩種配置方式

    AOP之事務(wù)管理<aop:advisor>的兩種配置方式

    這篇文章主要介紹了AOP之事務(wù)管理<aop:advisor>的兩種配置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java垃圾回收之標(biāo)記壓縮算法詳解

    Java垃圾回收之標(biāo)記壓縮算法詳解

    今天小編就為大家分享一篇關(guān)于Java垃圾回收之標(biāo)記壓縮算法詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • java教學(xué)筆記之對象的創(chuàng)建與銷毀

    java教學(xué)筆記之對象的創(chuàng)建與銷毀

    面向?qū)ο蟮木幊陶Z言使程序能夠直觀的反應(yīng)客觀世界的本來面目,并且使軟件開發(fā)人員能夠運用人類認(rèn)識事物所采用的一般思維方法進行軟件開發(fā),是當(dāng)今計算機領(lǐng)域中軟件開發(fā)和應(yīng)用的主流技術(shù)。
    2016-01-01
  • 關(guān)于阿里巴巴TransmittableThreadLocal使用解讀

    關(guān)于阿里巴巴TransmittableThreadLocal使用解讀

    文章主要介紹了三種ThreadLocal的使用:ThreadLocal、InheritableThreadLocal和TransmittableThreadLocal,ThreadLocal和InheritableThreadLocal在單線程和部分情況下可以正常工作,但TransmittableThreadLocal在處理線程池時表現(xiàn)更佳
    2025-02-02
  • SpringBoot采用AJAX實現(xiàn)異步發(fā)布帖子詳解

    SpringBoot采用AJAX實現(xiàn)異步發(fā)布帖子詳解

    Ajax是一種web應(yīng)用技術(shù),可以借助客戶端腳本(javascript)與服務(wù)端應(yīng)用進行異步通訊,獲取服務(wù)端數(shù)據(jù)以后,可以進行局部刷新,進而提高數(shù)據(jù)的響應(yīng)和渲染速度。所有的Ajax請求都會基于DOM(HTML元素)事件,通過XHR(XMLHttpRequest)對象實現(xiàn)與服務(wù)端異步通訊局部更新
    2022-08-08
  • Java通過接口實現(xiàn)匿名類的實例代碼

    Java通過接口實現(xiàn)匿名類的實例代碼

    這篇文章介紹了Java通過接口實現(xiàn)匿名類的實例代碼,有需要的朋友可以參考一下
    2013-10-10
  • JAVA超級簡單的爬蟲實例講解

    JAVA超級簡單的爬蟲實例講解

    下面小編就為大家?guī)硪黄狫AVA超級簡單的爬蟲實例講解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 你真的理解Java中的ArrayList嗎

    你真的理解Java中的ArrayList嗎

    這篇文章主要給大家介紹了關(guān)于Java中ArrayList的相關(guān)資料,ArrayList就是傳說中的動態(tài)數(shù)組,用MSDN中的說法,就是Array的復(fù)雜版本,需要的朋友可以參考下
    2021-08-08
  • Java實現(xiàn)音頻添加自定義時長靜音的示例代碼

    Java實現(xiàn)音頻添加自定義時長靜音的示例代碼

    這篇文章主要介紹了一個Java工具類,可以實現(xiàn)給一個wav音頻添加自定義時長靜音。文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-01-01

最新評論

含山县| 上饶县| 屯留县| 五常市| 碌曲县| 大荔县| 潢川县| 焦作市| 牟定县| 泉州市| 顺昌县| 平远县| 成武县| 柳林县| 嘉义市| 十堰市| 新龙县| 社会| 大邑县| 滦南县| 车致| 武乡县| 临潭县| 环江| 香港 | 华池县| 黑山县| 吉林省| 墨脱县| 杭锦后旗| 都匀市| 济宁市| 南陵县| 弥渡县| 秦皇岛市| 高要市| 紫云| 义乌市| 天气| 渝中区| 海宁市|