【Map遍歷的兩種常見方式】keySet 和 entrySet
前邊甭說其他了
沒有開場白、直接看代碼
1、使用keyset進行遍歷:
Map<String,String> map1=new HashMap<String, String>();
map1.put("one","zhangsan");
map1.put("two","lisi");
map1.put("three","wangwu");
//獲取map1中的所有key
Set<String> keySet = map1.keySet();
//通過迭代器遍歷集合
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext()){
//這裏hasNext稍作解釋,如果仍有元素可以迭代,則返回 true。(換句話說,如果 next 返回了元素而不是拋出異常,則返回 true)。【此處引用爲JavaSEAPI解釋】
String key = iterator.next();//得到每一個key
String value = map1.get(key);//通過key得到value
System.out.println("map1的鍵爲:"+key+",map1的值爲:"+value);
}
2、使用entryset進行遍歷
Map<String,String> map2=new HashMap<String, String>();
map2.put("one","zhangsan");
map2.put("two","lisi");
map2.put("three","wangwu");
Set<Map.Entry<String, String>> entries = map2.entrySet();
/**
* Map.entrySet迭代器會生成EntryIterator,其返回的實例是一個包含key/value鍵值對的對象。
* 而keySet中迭代器返回的只是key對象,還需要到map中二次取值。故entrySet要比keySet快一倍左右。
*/
Iterator<Map.Entry<String, String>> iterator1 = entries.iterator();
while (iterator1.hasNext()){
Map.Entry<String, String> stringEntry = iterator1.next();//迭代出來的是每一個實例的對象,包含鍵值對
//從實例對象stringEntry中可直接拿取Key/Value
String key = stringEntry.getKey();
String value = stringEntry.getValue();
System.out.println();
System.out.println("map2的鍵爲:"+key+",map2的值爲:"+value);
}
總結:
1、keySet獲取value只能通過先獲取key才能得到value
2、entrySet在迭代之後可以直接從迭代出來的實例對象中直接獲取Key和Value
3、兩個方法遍歷的結果都一樣,若對查詢速度有要求就選entrySet(),entrySet可以提高性能。
簡單瞭解Map的這兩種遍歷方式,先知道怎麼用,後期根據居具體情況再深入研究吧。
最後格言: 堅持夢想、不要放棄、是金子總會發光
加油!!總有一天你會成功