我是靠谱客的博主 俊逸纸鹤,最近开发中收集的这篇文章主要介绍集合遍历时删除元素,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

集合遍历时删除元素

      • 使用迭代器的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);
}
}
}

最后

以上就是俊逸纸鹤为你收集整理的集合遍历时删除元素的全部内容,希望文章能够帮你解决集合遍历时删除元素所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部