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)文章
使用list stream:對List中的對象先進行排序再獲取前n個對象
這篇文章主要介紹了使用list stream:對List中的對象先進行排序再獲取前n個對象,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
Java后臺Controller實現(xiàn)文件下載操作
這篇文章主要介紹了Java后臺Controller實現(xiàn)文件下載操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10
SpringBoot基于RabbitMQ實現(xiàn)消息延時隊列的方案
在很多的業(yè)務(wù)場景中,延時隊列可以實現(xiàn)很多功能,此類業(yè)務(wù)中,一般上是非實時的,需要延遲處理的,需要進行重試補償?shù)?本文給大家介紹了SpringBoot基于RabbitMQ實現(xiàn)消息延遲隊列的方案,文中有詳細的代碼講解,需要的朋友可以參考下2024-04-04
java使用URLDecoder和URLEncoder對中文字符進行編碼和解碼
這篇文章主要介紹了java 使用 URLDecoder 和 URLEncoder 對中文字符進行編碼和解碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

