`

list.remove(obj)中java.util.ConcurrentModificationException

阅读更多
今天在对ArrayList操作的时候出现一个异常:java.util.ConcurrentModificationException,第一次遇见,So,记录一下。

出现原因:
ArrayList<Object> list = new ArrayList<Object>();
for (Object obj : list ) {
    if (obj.id == 12) {
        list.remove(obj);
     }
}
程序运行报错。

解决方法,new一个新的list存方需要被remove的对象,批量remove;



ArrayList<Object> list = new ArrayList<Object>();
ArrayList<Object> delList = new ArrayList<Object>();
for (Object obj : list ) {
    if (obj.id == 12) {
        delList.add(obj);
     }
}

list.removeAll(delList);

这样即可搞定。

产生此异常的原因是:
执行remove(Object o)方法之后,modCount和expectedModCount不相等了。然后当代码执行到next()方法时,判断了checkForComodification(),发现两个数值不等,就抛出了该Exception。

详情参见:http://www.blogjava.net/EvanLiu/archive/2008/08/31/224453.html
分享到:
评论

相关推荐

    Qt+opengl加载各种类型的3D模型,.glb .obj 等;Qt+opengl加载各种类型的3D模型,.glb .obj

    Qt+opengl加载各种类型的3D模型,.glb .obj 等;Qt+opengl加载各种类型的3D模型,.glb .obj 等;Qt+opengl加载各种类型的3D模型,.glb .obj 等;Qt+opengl加载各种类型的3D模型,.glb .obj 等;Qt+opengl加载各种...

    obj2mat.rar_.obj文件_obj_obj matlab_obj 转mat_obj格式文件

    在`.obj`到`.mat`的转换过程中,首先,`readObj_v_f.m`脚本会逐行读取`.obj`文件,识别“v”(顶点)、"f"(面)以及其他可能的标记,如“vn”(法线)、"vt"(纹理坐标)等。顶点数据通常表示为三维坐标(x, y, z)...

    C++经典错误之already defined in *****.obj解决方法

    在上述案例中,错误信息表明了以下几个符号已经在xzmain.obj中定义: * "public: __thiscall XZ::XZ(void)"(构造函数) * "public: void __thiscall XZ::pdc(void)" * "public: void __thiscall XZ::pcd(void)" * ...

    error LNK2005: DllMain already defined in corelibc.lib(dllmain.obj)

    error LNK2005: DllMain already defined in corelibc.lib(dllmain.obj)的解决方案

    libx.exe 从vc COFF格式的.lib静态库提取出.obj文件

    .lib文件在VC中代表静态库,它包含预编译的.obj文件,当链接到项目时,这些.obj文件的代码会被直接嵌入到最终的可执行文件中。 提取.lib静态库中的.obj文件通常是为了进行特定的修改或者单独处理这些对象代码。这...

    VB6.0生成EXE时保留.OBJ文件

    在VB6.0环境下开发应用程序时,我们经常会遇到的一个问题是,当编译成可执行文件(EXE)后,VB会自动清理掉编译过程中产生的中间文件,包括.OBJ文件。这些.OBJ文件是编译过程中的产物,包含了源代码经过预处理、汇编...

    three.js obj转js的详细步骤

    three.js obj转js的详细步骤 在 three.js 中,加载模型文件可以使用多种格式,其中 js 格式的...通过这个过程,可以将 obj 格式的模型文件转换为 js 格式的文件,然后加载到 three.js 中,以实现模型的加载和渲染。

    LINK.EXE obj链接工具

    LINK.EXE obj链接工具 LINK.EXE obj链接工具 LINK.EXE obj链接工具

    调用obj文件中的函数.zipc语言调用.lib,.dll,.a,.so中的函数不稀奇,可是你听说过调用.obj文件中的函数吗?

    然而,直接调用`.obj`(目标文件)中的函数并不常见,因为`.obj`文件通常用于编译链接过程,而不是作为直接调用的接口。本文将深入探讨如何在C语言中实现这一非典型操作,并提供相关资源和示例。 首先,理解`.obj`...

    osgb.osg.ive.obj互转工具

    在IT行业中,尤其是在3D建模和图形处理领域,数据格式的互换是常见的需求。"osgb.osg.ive.obj互转工具"是专为解决这类问题而设计的实用软件,它允许用户在不同的3D文件格式之间进行转换。下面我们将详细探讨这些文件...

    main.OBJ.obj

    main.OBJ.obj

    STARTUP.OBJ.obj

    STARTUP.OBJ.obj

    CacheManager.java 管理缓存

    import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; /** * 文件名:CacheManager.java 管理缓存 * 版本信息:V1.0 * 日期:2013-06-18 * Copyright BDVCD Corporation 2013 *...

    display_obj.zip_.obj_.obj用什么打开_display_obj()_matlab 打开obj_obj 3d

    在MATLAB中,`.obj`文件是一种常用的3D模型格式,用于存储三维几何数据和相关的表面属性,如颜色和纹理。这种文件格式广泛应用于计算机图形学、游戏开发和科学可视化等领域。`.obj`文件通常包含顶点、纹理坐标、法线...

    20个可读的obj模型文件

    OBJ模型文件是一种常见的3D模型格式,由Wavefront Technologies开发,广泛用于计算机图形学和游戏开发领域。这个压缩包包含了20个可读的OBJ文件,每个文件代表一个独立的三维模型。OBJ文件的主要特点是它以文本形式...

    C++Builer编译时缺失OBJ文件,其对应的BPI引用库文件

    在C++Builder编程环境中,遇到"Unable to open file XXX.obj"这样的错误,通常是由于编译过程中找不到所需的对象文件(OBJ)或对应的库引用。这些OBJ文件是编译器在链接阶段需要的,它们包含了编译期间生成的机器码...

    PLATFORM压缩包_ATLSSUP.OBJ_库包

    安装VC6.0时候 选择完全版安装,很容易遇到这种情况,说是丢失···文件,如以下:PLATFORM/XST_LIB/ATLSSUP.OBJ,PLATFORM\XST_LIB\LLDIV.OBJ,PLATFORM \XST_LIB\STRSPN.OBJ,PLATFORM\XMT_LIB\RTTI.OBJ,...

    OBJ.rar_ obj.rar _obj_obj load_obj模型_读取obj

    本文将深入探讨`.obj`格式及其在编程中的读取和加载过程。 `.obj`文件格式的核心是其简洁的文本结构,易于人阅读和机器解析。它包含了顶点(vertices)、纹理坐标(texture coordinates)和法线(normals)等信息,...

    LoadObj.java

    java3D加载Obj文件 obj文件是3D模型文件格式。由Alias|Wavefront公司为3D建模和动画软件"Advanced Visualizer"开发的一种标准,适合用于3D软件模型之间的互导,也可以通过Maya读写。

Global site tag (gtag.js) - Google Analytics