Java Map 對象不能在迭代時進行刪除操作
示例如下:
<span style="white-space:pre"> </span>@Test
public void removeTest(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("hello","world");
map.put("kitty", "mvane");
for(String str : map.keySet()){
System.out.println(map.get(str));
}
for(String str : map.keySet()){
map.remove(str);// 拋出 java.util.ConcurrentModificationException
}
}
@Test
public void removeTest2(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("hello","world");
map.put("kitty", "mvane");
for(Iterator<String> iterator = map.keySet().iterator();iterator.hasNext();){
System.out.println(map.get(iterator.next()));
}
for(Iterator<String> iterator = map.keySet().iterator();iterator.hasNext();){
String str = iterator.next();
if(str.equals("kitty")){
iterator.remove();
map.remove(str);
}
}
for(Iterator<String> iterator = map.keySet().iterator();iterator.hasNext();){
System.out.println(map.get(iterator.next()));
}
}