`
mywhy
  • 浏览: 67539 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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);//遍历完成后执行删除
分享到:
评论

相关推荐

    ConcurrentModificationException解决办法.md

    ConcurrentModificationException解决办法.md

    出现java.util.ConcurrentModificationException 问题及解决办法

    **解决办法:** 1. **通过Iterator修改集合:** 如果你需要在遍历过程中修改集合,应使用迭代器自身的`remove()`方法。这样,迭代器会正确地处理集合的修改,避免异常。 ```java while (it.hasNext()) { ...

    java.util.ConcurrentModificationException 解决方法

    **解决办法:** 1. **通过 Iterator 修改 Hashtable:** 当你必须在遍历过程中删除元素时,应使用迭代器的 `remove()` 方法而不是集合的 `remove()` 方法。这是因为迭代器的 `remove()` 方法会同步更新迭代器的...

    Java 常见问题解决集合.docx

    解决办法包括: - **检查类型:** 确认变量的类型与期望的类型相匹配。 - **赋值和表达式:** 确保赋值操作符两侧的类型一致,且表达式中的所有操作都是合法的。 - **方法调用:** 检查方法调用中的参数类型是否符合...

    Java常见异常集-Java,Hibernate,Tomcat异常

    解决办法包括恢复备份数据,或者检查存储机制的稳定性和正确性。 5. **IllegalStateException: Session已失效**:当尝试访问一个已经失效的HttpSession时,会抛出此异常。确保在适当的时候关闭或重新创建Session,...

    ArrayList.docx

    2. **解决办法**: - 使用线程安全的`Vector`替代`ArrayList`。 - 通过`Collections.synchronizedList()`方法将`ArrayList`转换为线程安全的版本。 - 使用`CopyOnWriteArrayList`,它采用写时复制策略,读操作时...

    藏经阁-Java开发手册(泰山版)灵魂13问-117.pdf

    解决办法是在使用前确保所有可能出现的null值已经得到妥善处理。 2. **初始化HashMap的容量大小**: 阿里巴巴建议初始化HashMap时指定容量,以避免内部扩容操作带来的性能开销。合适的初始化容量取决于预期的元素...

    超级有影响力霸气的Java面试题大全文档

    多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 5、String是最基本的数据类型吗?  基本数据类型包括byte、int、char、long、float、double、boolean和short。  java....

    java 面试题 总结

    多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。 2、String是最基本的数据类型吗? 基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang....

Global site tag (gtag.js) - Google Analytics