集合删除元素初探

原创 2018年04月17日 15:22:39

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

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

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


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


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

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

List集合删除元素,该怎么删除?

package com.zz.web.controller;import java.util.ArrayList; import java.util.Iterator;public class Tes...
  • hacfox
  • hacfox
  • 2016-07-04 22:29:37
  • 2536

集合遍历时删除元素异常(ConcurrentModificationException)分析

传统方式下的Collection在迭代集合时,不允许对集合进行修改。根据AbstractList的checkForComodification方法的源码,分析产生ConcurrentModificat...
  • lin111000713
  • lin111000713
  • 2016-09-28 23:06:10
  • 441

集合中元素的删除

集合中元素的删除 最近在工作中遇到一个问题,就是要在集合中Remove一个指定的Object,一开始犯了一个很可笑的错误,比如一个ArrayList array中有如下元素:”a”,”b”,”c”,”...
  • liyangbing315
  • liyangbing315
  • 2010-05-25 17:05:00
  • 6651

java 中List 集合删除元素

今天做一个排班的功能;设计的时候需要实现从一个list集合中  删除一个object的操作; for (HumanWorkTime hwt: hwtList) {                 ...
  • CrazyingDays
  • CrazyingDays
  • 2014-03-24 18:09:44
  • 3937

java中集合删除元素的两种常用方式及新手易错

java中集合删除元素的两种常用方式及新手易错: 创建集合: ArrayList aList = new ArrayList(); aList.add("a"); aList.add("b"...
  • u014143369
  • u014143369
  • 2016-11-01 15:11:34
  • 1257

【C#】删除集合里的元素

C#删除集合中的所有元素
  • qq_18995513
  • qq_18995513
  • 2016-11-22 18:14:44
  • 795

C#实现在foreach中删除集合中的元素

C#实现在foreach中删除集合中的元素
  • devgis
  • devgis
  • 2017-11-17 17:17:55
  • 1514

C#遍历集合移除元素

如果用foreach,会造成被遍历的集合更改后带来异常问题。 此时,用for循环可有效的解决这个问题。 for(int i=0;i  {  if(条件是真) {   List.Remove...
  • jixiaomeng821
  • jixiaomeng821
  • 2014-06-11 11:02:24
  • 3030

STL/C++__中 set(集合) 删除元素

#include using std::set; int main(int argc,char *argv[]) { set s; set::iterator it; s.insert(...
  • u010003835
  • u010003835
  • 2015-10-10 15:01:40
  • 4927

遍历List集合同时删除元素的正确方法

import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class TestIte...
  • zhangyong125
  • zhangyong125
  • 2015-09-28 16:46:20
  • 1869
收藏助手
不良信息举报
您举报文章:集合删除元素初探
举报原因:
原因补充:

(最多只允许输入30个字)