集合删除元素初探

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

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();
      }
 }

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


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


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值