java中HashMap的七種遍歷方式小結(jié)
HashMap遍歷方式分類
- HashMap的多種遍歷方式從大體中歸類 , 可以分為以下4類 :
- 迭代器(Iterator)
- For Each
- Lambda (JDK 1.8 +)
- Streams API (JDK 1.8 +)
- 但是每種方式又有不同的實現(xiàn)類型 :
- 使用迭代器(Iterator)EntrySet / KeySet 的方式進行遍歷;
- 使用 For Each EntrySet / For Each KeySet 的方式進行遍歷;
- 使用 Lambda 表達式的方式進行遍歷;
- 使用 Streams API 單線程 / 多線程 的方式進行遍歷;
迭代器(Iterator)EntrySet
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); Iterator<Map.Entry<String, String>> iterator = hashMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); Object key = entry.getKey(); Object val = entry.getValue(); System.out.println("key : " + key + "-----" + "val : " + val); }
迭代器(Iterator)KeySet
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); Iterator<String> iterator = hashMap.keySet().iterator(); while (iterator.hasNext()) { String key = iterator.next(); Object val = hashMap.get(key); System.out.println("key : " + key + "-----" + "val : " + val); }
For Each EntrySet
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); for (Map.Entry<String, String> entry : hashMap.entrySet()) { Object key = entry.getKey(); Object val = entry.getValue(); System.out.println("key : " + key + "-----" + "val : " + val); }
For Each KeySet
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); for (String key : hashMap.keySet()) { Object val = hashMap.get(key); System.out.println("key : " + key + "-----" + "val : " + val); }
Lambda
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); hashMap.forEach((key , val) -> System.out.println("key : " + key + "-----" + "val : " + val));
Streams API 單線程
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); hashMap.entrySet().stream().forEach((entry) -> { Object key = entry.getKey(); Object val = entry.getValue(); System.out.println("key : " + key + "-----" + "val : " + val); });
Streams API 多線程
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); hashMap.entrySet().stream().parallel().forEach((entry) -> { Object key = entry.getKey(); Object val = entry.getValue(); System.out.println("key : " + key + "-----" + "val : " + val); });
我們不能在遍歷Map時使用map.remove()方法 , 否則就會拋出異常 :
java.util.ConcurrentModificationException , 這種辦法是非安全的 , 我們可以使用Iterator.remove() ,或者是Lambda 中的 removeIf() , 或者是Stream 中的 filter() 過濾或者刪除相關(guān)數(shù)據(jù)
到此這篇關(guān)于java中HashMap的七種遍歷方式小結(jié)的文章就介紹到這了,更多相關(guān)java HashMap遍歷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一篇文章帶你了解一些Java反射的學(xué)習(xí)記錄
java反射機制是一個很好用的東西,用它可以解決很多死的東西,因為反射機制的靈活行很大,有了他,我們就不要花太多的時間來寫操做數(shù)據(jù)庫的代碼了,這個可以很大的減少開發(fā)時間,而且代碼的可讀性好2021-09-09Java基礎(chǔ)學(xué)習(xí)之關(guān)鍵字和變量數(shù)據(jù)類型的那些事
變量就是系統(tǒng)為程序分配的一塊內(nèi)存單元,用來存儲各種類型的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)學(xué)習(xí)之關(guān)鍵字和變量數(shù)據(jù)類型的那些事,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-07-07SpringBoot項目整合jasypt實現(xiàn)過程詳解
這篇文章主要介紹了SpringBoot項目整合jasypt實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08tk-mybatis整合springBoot使用兩個數(shù)據(jù)源的方法
單純的使用mybaits進行多數(shù)據(jù)配置網(wǎng)上資料很多,但是關(guān)于tk-mybaits多數(shù)據(jù)源配置沒有相關(guān)材料,本文就詳細的介紹一下如何使用,感興趣的可以了解一下2021-12-12聊聊@RequestParam,@PathParam,@PathVariable等注解的區(qū)別
這篇文章主要介紹了聊聊@RequestParam,@PathParam,@PathVariable等注解的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02java通過jacob實現(xiàn)office在線預(yù)覽功能
這篇文章主要為大家詳細介紹了java通過jacob實現(xiàn)office在線預(yù)覽功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08