Map操作边遍历边修改是不安全的方式,如何避免呢?只有通过其他结构来处理,将修改和读取分开就OK。
package com.boonya.map; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapTest { private Map<Integer, String> map = new HashMap<Integer, String>(); public void Add(Integer key,String value) { map.put(key,value); } public void Remove(Integer key) { if(map.containsKey(key)){ map.remove(key); } } public void ReadMapMethodOne(){ Set<Integer> set= map.keySet(); for (Integer in : set) { //map.keySet()返回的是所有key的值 String str = map.get(in);//得到每个key多对用value的值 System.out.println(in + " " + str); } } public void ReadMapMethodTwo(){ Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } } public void ReadMapMethodThree() { Set<Map.Entry<Integer,String>> entrySet=map.entrySet(); for (Map.Entry<Integer, String> entry :entrySet) { //Map.entry<Integer,String> 映射项(键-值对) 有几个方法:用上面的名字entry //entry.getKey() ;entry.getValue(); entry.setValue(); //map.entrySet() 返回此映射中包含的映射关系的 Set视图。 System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } } public void ReadMapMethodFour() { for (String value:map.values()){ System.out.println(" value= " +value); } } }