【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的这两种遍历方式,先知道怎么用,后期根据居具体情况再深入研究吧。
最后格言: 坚持梦想、不要放弃、是金子总会发光
加油!!总有一天你会成功