您的位置:首页 > 其它

关于使用Iterator删除List中的多个元素

2018-01-03 17:14 246 查看
今天在写代码时要删除List中的多个元素时犯了一个很搞笑的错误,等效的就是以下代码

public static void main(String[] args) {
List<String> a = new ArrayList<String>();
a.add("1");
a.add("2");
a.add("3");
a.add("4");
a.add("5");
Iterator<String> iterator = a.iterator();
while(iterator.hasNext()){
if("1".equals(iterator.next()) || "2".equals(iterator.next()))
iterator.remove();
}
}


运行后发现只能删除“1”这个元素,“2”删除不掉,后来才发现判断的时候如果第一个条件不满足,iterator.next()这个方法又会执行一遍,相当于已经不再是当前的元素了,当时写的还特别顺溜。。。

应该改成下面 这样

while(iterator.hasNext()){
String str = iterator.next();
if("1".equals(str) || "2".equals(str))
iterator.remove();
}


把当前指向的元素单独提出来放在条件判断里面,平时在写普通循环的时候写习惯了,没有把循环中的元素提出来。

记录一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息