java集合迭代器Iterator中的remove陷阱

作者:小和尚敲代码 时间:2022-06-17 16:11:54 

package TestList;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.TreeSet;

public class TestIterator {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<String> list = new ArrayList<String>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        Iterator t = list.iterator();
        while(t.hasNext()){
            if(t.next().equals("bbb")){   //使用iterator遍历list集合时,如果想要删除任一集合内元素,必须要在正好遍历倒数第二个元素的时候去删除
                list.remove("ccc");
            }
        }
        
        TreeSet<String> set = new TreeSet<String>();
        set.add("ddd");
        set.add("eee");
        set.add("fff");
        Iterator t1 = set.iterator();
        while(t1.hasNext()){
            if(t1.next().equals("fff")){  //使用iterator遍历set集合时,如果想要删除任一集合内元素,必须要在正好遍历倒数第一个元素的时候去删除
                set.remove("eee");
            }
        }
    }

}

由于List,Set在实现Iterator时存在一定的差异,因此导致了List,Set在迭代的同时删除集合元素的会有不同的表现

标签:Iterator,remove
0
投稿

猜你喜欢

  • springboot docker jenkins 自动化部署并上传镜像的步骤详解

    2023-07-28 01:54:38
  • java数据结构之希尔排序

    2023-11-08 18:16:18
  • Java中对于双属性枚举的使用案例

    2023-07-20 15:00:09
  • Java java.sql.Timestamp时间戳案例详解

    2023-11-10 13:50:47
  • Java重写equals及hashcode方法流程解析

    2023-10-14 06:53:13
  • 关于SpringGateway调用服务 接受不到参数问题

    2023-08-31 13:05:00
  • SpringCloudConfig之client端报错Could not resolve placeholder问题

    2023-11-23 11:19:17
  • Java中ShardingSphere分库分表实战

    2023-11-24 09:20:37
  • IDEA SpringBoot项目配置热更新的步骤详解(无需每次手动重启服务器)

    2023-11-12 00:22:41
  • java使用字符画一个海绵宝宝

    2023-09-08 09:45:19
  • jenkins+maven+svn自动部署和发布的详细图文教程

    2023-08-24 05:18:07
  • Java基于Runtime调用外部程序出现阻塞的解决方法

    2023-11-09 04:24:23
  • 浅谈java的接口和C++虚类的相同和不同之处

    2023-08-05 12:01:51
  • SpringMVC自定义拦截 器登录检测功能的实现代码

    2023-07-27 18:33:05
  • Java命令设计模式优雅解耦命令和执行提高代码可维护性

    2023-11-23 06:25:46
  • 详解Java Proxy动态 代理机制

    2023-07-24 21:01:58
  • Java使用Math.random()结合蒙特卡洛方法计算pi值示例

    2023-05-10 10:43:13
  • java代码执行字符串中的逻辑运算方法

    2023-11-29 12:13:06
  • android自动生成dimens适配文件的图文教程详解(无需Java工具类)

    2023-07-17 12:12:30
  • 浅析Mybatis 在CS程序中的应用

    2023-06-24 08:44:15
  • asp之家 软件编程 m.aspxhome.com