JavaMap兩種遍歷方式keySet與entrySet詳解
1.使用keySet進行遍歷
實現(xiàn)步驟:
(1)使用Map集合中的方法keySet(),把Map集合所有的key取出來,存儲到一個Set集合中
(2)遍歷set集合,獲得Map集合中的每一個key
(3)通過Map集合中的方法get(key),通過key找到value
@Test public void testKeySet() { Map<String, Integer> map = new ConcurrentHashMap<>(16); map.put("one",1); map.put("two",2); map.put("three",3); // 1.增強for循環(huán)遍歷map中的key for (String key : map.keySet()) { // 通過key找到對應(yīng)的value Integer value = map.get(key); System.out.println(key + "->" +value); } System.out.println("------------------------"); // 2.使用迭代器來進行遍歷(map集合中所有的key取出來,存儲到Set集合中) Iterator<String> iteratorKey = map.keySet().iterator(); while (iteratorKey.hasNext()){ String key = iteratorKey.next(); Integer value = map.get(key); System.out.println(key + "->" +value); } }
2.使用entrySet進行遍歷
實現(xiàn)步驟:
(1)Map.entrySet()把map的鍵值映射成Set集合
(2)Map.entrySet迭代器會生成EntryIterator,其返回的實例是一個包含key/value鍵值對的對象
(3)getKey(): 返回鍵值對的key
(4)getValue(): 返回鍵值對的value
@Test public void testEntrySet() { Map<String, Integer> map = new ConcurrentHashMap<>(16); map.put("one",1); map.put("two",2); map.put("three",3); // Map.entrySet迭代器會生成EntryIterator,其返回的實例是一個包含key/value鍵值對的對象。 // 而keySet中迭代器返回的只是key對象,還需要到map中二次取值。故entrySet要比keySet快一倍左右。 Set<Map.Entry<String, Integer>> entries = map.entrySet(); Iterator<Map.Entry<String, Integer>> entryIterator = entries.iterator(); while (entryIterator.hasNext()){ // 迭代出來的是每一個實例的對象,包含鍵值對 Map.Entry<String, Integer> entry = entryIterator.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println(key + "->" + value); } }
3.對比
(1)keySet獲取value只能通過先獲取key才能得到value
(2)entrySet在迭代之后可以直接從迭代出來的實例對象中直接獲取Key和Value
(3)兩個方法遍歷的結(jié)果都一樣,若對查詢速度有要求就選entrySet(),entrySet可以提高性能。
到此這篇關(guān)于JavaMap兩種遍歷方式keySet與entrySet詳解的文章就介紹到這了,更多相關(guān)JavaMap keySet與entrySet內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java和javascript中過濾掉img形式的字符串不顯示圖片的方法
這篇文章主要介紹了java和javascript中過濾掉img形式的字符串不顯示圖片的方法,以實例形式分別講述了采用java和javascript實現(xiàn)過濾掉img形式字符串的技巧,需要的朋友可以參考下2015-02-02JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件解析
這篇文章主要為大家詳細(xì)介紹了JDK動態(tài)代理之ProxyGenerator生成代理類的字節(jié)碼文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02Springboot POI導(dǎo)出Excel(瀏覽器)
這篇文章主要為大家詳細(xì)介紹了Springboot POI導(dǎo)出Excel,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05java 中使用maven shade plugin 打可執(zhí)行Jar包
這篇文章主要介紹了java 中使用maven shade plugin 打可執(zhí)行Jar包的相關(guān)資料,需要的朋友可以參考下2017-05-05Java +Tomcat + SpringMVC實現(xiàn)頁面訪問示例解析
這篇文章主要介紹了Java +Tomcat + SpringMVC實現(xiàn)頁面訪問示例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Druid(新版starter)在SpringBoot下的使用教程
Druid是Java語言中最好的數(shù)據(jù)庫連接池,Druid能夠提供強大的監(jiān)控和擴展功能,DruidDataSource支持的數(shù)據(jù)庫,這篇文章主要介紹了Druid(新版starter)在SpringBoot下的使用,需要的朋友可以參考下2023-05-05MyBatisPlus PaginationInterceptor分頁插件的使用詳解
這篇文章主要介紹了MyBatisPlus PaginationInterceptor分頁插件的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03