zoukankan      html  css  js  c++  java
  • List循环遍历时移出元素

    普通的增强for循环遍历时移出元素报错

    package com.fridge.controller.cms;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @program: mythicalanimals
     * @description: 集合遍历时移出元素demo
     * @author: TheEternity Zhang
     * @create: 2020-06-08 14:27
     */
    public class ListIteratorDemo {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("abc");
            list.add("abe");
            list.add("hgf");
            list.add("zzx");
            for (String str: list) {
                if(str.contains("a")){
                    list.remove(str);
                }else{
                    System.out.println(str);
                }
            }
            System.out.println("集合的数量:"+list.size());
        }
    }
    

    抛出ConcurrentModificationException异常

    Connected to the target VM, address: '127.0.0.1:62068', transport: 'socket'
    Exception in thread "main" java.util.ConcurrentModificationException
    	at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
    	at java.util.ArrayList$Itr.next(ArrayList.java:859)
    	at com.fridge.controller.cms.ListIteratorDemo.main(ListIteratorDemo.java:19)
    Disconnected from the target VM, address: '127.0.0.1:62068', transport: 'socket'
    

    使用Iterator在遍历时移出元素

    package com.fridge.controller.cms;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    /**
     * @program: mythicalanimals
     * @description: 集合遍历时移出元素demo
     * @author: TheEternity Zhang
     * @create: 2020-06-08 14:27
     */
    public class ListIteratorDemo {
        public static void main(String[] args) {
            List<String> list = new ArrayList<>();
            list.add("abc");
            list.add("abe");
            list.add("hgf");
            list.add("zzx");
            Iterator<String> iterator = list.iterator();
            while (iterator.hasNext()){
                String str = iterator.next();
                if(str.contains("a")){
                    iterator.remove();
                }else{
                    System.out.println(str);
                }
            }
            System.out.println("集合的数量:"+list.size());
        }
    }
    
    

    结果

    hgf
    zzx
    集合的数量:2
    
  • 相关阅读:
    堆排序
    我花了一年时间来学机器学习
    一个由进程内存布局异常引起的问题
    老曹眼中的Linux基础
    Select模型原理
    socket编程的select模型
    [插件] 如何在一个页面中使用多个SWFUpload对象上传文件
    [算法] 拖动排序
    [算法] 应用版本更新逻辑
    [oracle] 如何使用myBatis在数据库中插入数据并返回主键
  • 原文地址:https://www.cnblogs.com/eternityz/p/13595801.html
Copyright © 2011-2022 走看看