概述
集合遍历时删除元素
- 使用迭代器的remove方法
- 倒序遍历删除
使用迭代器的remove方法
使用迭代器的remove方法,而不是集合的remove方法。这是因为,迭代器的remove方法会修改expectedModCount,从而使modCount与之相等
public void remove() {
if (lastRet < 0)
throw new IllegalStateException();
checkForComodification();
try {
ArrayList.this.remove(lastRet);
cursor = lastRet;
lastRet = -1;
expectedModCount = modCount;//这里预期的修改次数改为实际修改次数
} catch (IndexOutOfBoundsException ex) {
throw new ConcurrentModificationException();
}
}
public void testDel() {
List<Integer> list = Lists.newArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("bb");
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
Integer integer = iterator.next();
if (integer.equals("bb"))
iterator.remove();
}
}
倒序遍历删除
倒序的遍历,中间即使有删除也不会漏掉元素,防止移除元素后,后边的元素会往前移动,将空白填充上,导致的元素删除不完全
public void testDel() {
List<Integer> list = Lists.newArrayList();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("bb");
for(int i=list.size()-1;i>=0;i--){
if(list.get(i).equals("bb")){
list.remove(i);
}
}
}
最后
以上就是俊逸纸鹤为你收集整理的集合遍历时删除元素的全部内容,希望文章能够帮你解决集合遍历时删除元素所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复