您的位置:首页 > 其它

关于List.remove在for循环中出现问题的解决方案

2017-06-10 21:12 344 查看
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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐