在做项目的时候出现了一次concurrentmodificationexception异常,直接崩了,看到这个异常,感觉还是挺少见的。
于是对它进行了各种狂轰滥炸。顺利的把它干掉了!! 难度系数 一颗星;
ps:基本上没什么难度;
个人总结:就是说在对map或者list进行循环时,应该避免对它进行修改删除。
解决办法:顺便新建一个集合,把要删除的元素先封装起来,之后再remove掉就可以了。
Set<String> set = m.keySet();
List<TSWallSwitch> dlist=new ArrayList<TSWallSwitch>();
for (String s : set) {
TSDevice td = m.get(s);
if (td instanceof TSWallSwitch) {
ts = (TSWallSwitch) td;
if (!list.contains(ts.getId())) {
dlist.add(ts);
}
}
}
set .remove(dlist);