zoukankan      html  css  js  c++  java
  • ConcurrentModificationException解决办法

    package test.my.chap0302;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class RemoveOfListTest {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		List<String> list = new ArrayList<String>();
    		list.add("a");
    		list.add("b");
    		list.add("c");
    		//1. 遍历删除list里的第一个和最后一个时会报:ConcurrentModificationException
    		for(String s:list){
    			if(s.equals("c")){
    				list.remove(s);
    			}
    		}
    		//2.遍历删除list里的元素用索引时不会报ConcurrentModificationException
    //		for(int i=0;i<list.size();i++){
    //			String s = list.get(i);
    //			 if(s.equals("c")){
    //				 list.remove(s);
    //			 }
    //		}
    		//3.遍历删除用iterator不会报ConcurrentModificationException
    		Iterator<String> it = list.iterator();
    		while(it.hasNext()){
    			String s = it.next();
    			if(s.equals("b")){
    				it.remove();
    			}
    		}
    		System.out.println(list.size());
    	}
    
    }
    4.还有一种办法就是新建一个list集合,在删除或增加时先存放在新的list里,然后再删除。
    例:
    List delList = new ArrayList();//用来装需要删除的元素
    for(Information ia:list)
    	if(ia.getId()==k){
    		n++;
    		delList.add(ia);
    }
    list.removeAll(delList);//遍历完成后执行删除
    
  • 相关阅读:
    [转载]centos 6.4中git如何正常显示中文
    [转载] 在Linux中,开机自动运行普通用户的脚本程序
    elasticsearch中的filter与aggs
    GET和POST的区别
    Java NIO读书笔记2
    Java NIO读书笔记
    java之并发
    java中参数传递
    java中final关键字
    Java类的初始化过程及清理
  • 原文地址:https://www.cnblogs.com/harbin1900/p/8480941.html
Copyright © 2011-2022 走看看