for(Menu item:sub){
if(!subIds.contains(item.getId())){
sub.remove(item);
}
}
此时会出现异常,示例说明:
2,3,4
当删除2时,元素向后移动,执行i=i+1,从 0 1 2 变成 2 3 ,当删除3,元素向后移动,变成 3 4 ,此时会发现找不到4就结束循环
解决办法:
1.倒序删除: 2 1 0 -> 2 1 -> 2 刚好能够删除
2.迭代删除
Iterator<Menu> it = sub.iterator();
while(it.hasNext()){
Menu item = (Menu)it.next();
if(!subIds.contains(item.getId())){
it.remove();
}
}
关于List.remove在for循环中出现问题的解决方案
最新推荐文章于 2022-10-19 15:45:45 发布