错误写法:
for (int i = 0; i < contentList.size(); i++) {
Map<String,Object> map = contentList.get(i);
int proId = Integer.valueOf(map.get("proId").toString());
if(isSelected.contains(proId)){
contentList.remove();
}
}
(原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。)
正确:
for(Iterator it=contentList.iterator();it.hasNext(); ){
Map<String,Object> map = (Map<String,Object>)it.next();
int proId = Integer.valueOf(map.get("proId").toString());
if(isSelected.contains(proId)){
it.remove();
}
}
正确:
for (int i=contentList.size()-1; i >=0; i--) {
Map<String,Object> map = contentList.get(i);
int proId = Integer.valueOf(map.get("proId").toString());
if(isSelected.contains(proId)){
contentList.remove();
}
}