集合删除元素初探

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010317797/article/details/79974977

本文简单的介绍下,在以下三种情况下,删除集合自身元素会发生什么结果:

1 普通的for循环

2 普通foreach循环

3 迭代器Iterator循环

首先创建一个简单的集合:

List<String> list = new ArrayList<>();
list.add("JAVA");
list.add("C");
list.add("C++");
list.add("C#");

一 普通for循环删除

for(int i=0;i<list.size();i++){
    if(list.get(i).equals("C#")){
       list.remove(i);
    }
 }

代码示例如上,最终结果比较清晰,正常删除,输出结果如下:



二 普通foreach循环

for(String str:list){
    if(str.equals("C#")){
        list.remove(str);
    }
}

代码示例如上,最终输出结果如下:

直接抛出了ConcurrentModificationException异常,可见foreach循环下直接对集合进行修改会触发集合快速失败机制,不可删除元素。


三 迭代器Iterator循环

Iterator<String> iterable = list.iterator();
 while (iterable.hasNext()){            
     if(iterable.next().equals("C#")){
                iterable.remove();
      }
 }

代码示例如上,最终输出结果如下:


代码运行正常,删除了对应的集合元素。


总结:经过简单的代码示例和对比,可以很清晰的看出,三种循环情况下,删除集合自身元素,会运行出什么结果,个人还是推荐最后一种迭代方式,比较安全方便,当然以上介绍的还是非常粗浅,后面有时间再深入介绍一下

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页