hashmap遍历以及修改

1. Map的四种遍历方式
下面只是简单介绍各种遍历示例(以HashMap为例),各自优劣会在本文后面进行分析给出结论。

(1) for each map.entrySet()

Map<String, String> map = new HashMap<String, String>();
for (Entry<String, String> entry : map.entrySet()) {
	entry.getKey();
	entry.getValue();
}

(2) 显示调用map.entrySet()的集合迭代器

Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
	Map.Entry<String, String> entry = iterator.next();
	entry.getKey();
	entry.getValue();
}
(3) for each map.keySet(),再调用get获取

Map<String, String> map = new HashMap<String, String>();
for (String key : map.keySet()) {
	map.get(key);
}
(4)通过Map.values()遍历所有的value,但不能遍历key

for (String v : map.values()) {  
   System.out.println("value= " + v);  
  } 

4、结论总结

从上面的分析来看:第一种最好
a. HashMap的循环,如果既需要key也需要value,直接用

即可,foreach简洁易懂。

b. 如果只是遍历key而无需value的话,可以直接用第三种


2.修改:只能通过Iterator删除

Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator();
        while(it.hasNext()){
            Map.Entry<Integer, String> entry = it.next();
            Integer key = entry.getKey();
            if(key % 2 == 0){
           	 System.out.println("To delete key " + key);
           	 it.remove();    
           	 System.out.println("The key " + + key + " was deleted");
 
            }
        }






版权声明:本文为asd199205原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。