最新国产好看的视频,伊人天堂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的。所以當有其它線程改變了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,可能會導致數(shù)據(jù)的不一致性。

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

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

Map m = Collections.synchronizeMap(hashMap);

幾大常用集合的效率對比

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

相關文章

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

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

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

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

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

    Java垃圾回收之標記壓縮算法詳解

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

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

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

    關于阿里巴巴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應用技術,可以借助客戶端腳本(javascript)與服務端應用進行異步通訊,獲取服務端數(shù)據(jù)以后,可以進行局部刷新,進而提高數(shù)據(jù)的響應和渲染速度。所有的Ajax請求都會基于DOM(HTML元素)事件,通過XHR(XMLHttpRequest)對象實現(xiàn)與服務端異步通訊局部更新
    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嗎

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

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

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

最新評論

磴口县| 南岸区| 宁波市| 锦州市| 任丘市| 雅江县| 雷波县| 门源| 虎林市| 遂川县| 台中县| 志丹县| 志丹县| 平邑县| 双峰县| 巴东县| 井陉县| 腾冲县| 林口县| 麻江县| 西乌珠穆沁旗| 西宁市| 宁波市| 右玉县| 雅江县| 达孜县| 博客| 西丰县| 金门县| 淄博市| 日土县| 孝义市| 库尔勒市| 海林市| 镇巴县| 兴仁县| 革吉县| 鹤山市| 泗阳县| 岢岚县| 施甸县|