- 在集合框架的map中,有3个方法,分别是:
- keySet(): 将map中所有的key取出并存放在Set集合中(key的唯一性) Set<K>
- values(): 将map中的所有values取出并存放在一个Collection中(value不唯一) Collection<V>
- entrySet(): 将map中的一组键值对key-value视为一个整体entry,存放在Set<map.Entry<K,V>>
- 所以对应的遍历map集合也有3种方式:
//第一种:普遍使用,二次取值
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
//第二种
System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
for (String v : map.values()) {
System.out.println("value= " + v);
}
}
//第三种:推荐,尤其是容量大时
System.out.println("通过Map.entrySet遍历key和value");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
****当要对集合执行删除、插入时,必须要使用Iterator来保证类似事务的操作*****
//这中方法会比第三种方法效率低,但是可以用来保证集合的状态
System.out.println("通过Map.entrySet使用iterator遍历key和value:");
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
详情可参考:http://www.cnblogs.com/goody9807/p/6432904.html 对JAVA集合进行遍历删除时务必要用迭代器