关于使用Iterator删除List中的多个元素
2018-01-03 17:14
246 查看
今天在写代码时要删除List中的多个元素时犯了一个很搞笑的错误,等效的就是以下代码
运行后发现只能删除“1”这个元素,“2”删除不掉,后来才发现判断的时候如果第一个条件不满足,iterator.next()这个方法又会执行一遍,相当于已经不再是当前的元素了,当时写的还特别顺溜。。。
应该改成下面 这样
把当前指向的元素单独提出来放在条件判断里面,平时在写普通循环的时候写习惯了,没有把循环中的元素提出来。
记录一下
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(); }
把当前指向的元素单独提出来放在条件判断里面,平时在写普通循环的时候写习惯了,没有把循环中的元素提出来。
记录一下
相关文章推荐
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- 遍历list时删除某些情况下的元素,使用迭代器Iterator
- 如何在遍历中使用 iterator/reverse_iterator 删除元素
- 如何使用迭代器iterator循环删除容器中的元素?
- 如何在遍历中使用 iterator/reverse_iterator 删除元素
- 如何使用迭代器iterator循环删除容器中的元素?
- 如何边遍历集合边删除元素--使用Iterator中的remove()方法
- 正确遍历删除List中的元素(着重看iterator方式)
- STL 使用 erase 删除元素时 iterator 失效
- 使用倒序循环删除list中重复的相同元素 、 string的split使用、返回list(string)中出现多次的某元素的indexs...
- java 集合元素的删除要使用迭代器(Iterator) 笔记
- 数组、List中,删除容器中的某些元素时使用倒叙删除
- 反向迭代器reverse_iterator与正向迭代器iterator之间的转换(list反向删除元素的方法)
- 关于List集合元素的删除
- 关于list循环删除元素,迭代器失效的问题
- 关于使用iterator修改元素的值
- 如何在遍历中使用 iterator/reverse_iterator 删除元素
- STL中 如何在遍历中使用 iterator/reverse_iterator 删除元素
- 小记—— vector 删除指定下标中的元素(不使用迭代器(iterator ))