Java 修改列表映射获取ConcurrentModificationException

Java 修改列表映射获取ConcurrentModificationException,java,collections,Java,Collections,嗨,我正在创建两个列表来保存好的和坏的数据值。 我将这些列表传递给一个方法,在该方法中,我向goodMap添加一个新的键值,检查记录上的一些条件,如果它不好,然后将该记录添加到坏文件并将其从好文件中删除,但在执行此操作时,我收到oncurrentModificationException。我该如何解决这个问题 伪码 //original Lists of users List<Map<Object, Object>> _goodFile List&

嗨,我正在创建两个列表来保存好的和坏的数据值。 我将这些列表传递给一个方法,在该方法中,我向goodMap添加一个新的键值,检查记录上的一些条件,如果它不好,然后将该记录添加到坏文件并将其从好文件中删除,但在执行此操作时,我收到oncurrentModificationException。我该如何解决这个问题

伪码

    //original Lists of users
    List<Map<Object, Object>> _goodFile
    List<Map<Object, Object>> _badFile

    //tempList to hold return value
    List<Object> _tempList=new ArrayList<Object>(1);



    //call the method
    _tempList=cleanMap(_goodFile,_badFile)

     //assign the values back to original list
    _goodFile=_tempList.get(0);
    _badFile=tempList.get(1);


    //this is the method for cleaning

    public List<Object> cleanMap ( List<Map<Object, Object>> _temp1, List<Map<Object, Object>> _temp2)

    {

//return List

 List<Object> _returnList =new ArrayList<Object>(1);


for (Iterator<Map<Object, Object>> i = _temp1
                    .iterator(); i.hasNext();) 

            {
    Map<Object, Object> _Record = i.next();

     //first add a new key value pair to goodFile map
    _Record.put("Key","value");

    // check for condition; if it is bad remove from list

    if (bad)
    {
    //first add in bad file
    _temp2.add(_Record);

    //then remove from good file
    _temp1.remove(_Record);
    }

             }

return _returnList;

    }
//原始用户列表
列出好的文件
列表\u badFile
//圣殿骑士持有返回值
列表_templast=newarraylist(1);
//调用该方法
_templast=cleanMap(\u goodFile,\u badFile)
//将值分配回原始列表
_goodFile=\u templast.get(0);
_badFile=templast.get(1);
//这是清洁的方法
公共列表清理映射(列表临时1,列表临时2)
{
//返回列表
List _returnList=newarraylist(1);
for(迭代器i=_temp1
.iterator();i.hasNext();)
{
Map_Record=i.next();
//首先向goodFile映射添加一个新的键值对
_记录。放置(“键”、“值”);
//检查状况;如果状况不好,则从列表中删除
如果(坏)
{
//第一个加载项坏文件
_temp2.添加(_记录);
//然后从好的文件中删除
_temp1.删除(_记录);
}
}
返回-返回列表;
}
不要这样做:

_temp1.remove(_Record);
i.remove();
尝试这样做:

_temp1.remove(_Record);
i.remove();

请参阅javadoc以了解。

否则您也可以使用ConcurrentHashMap(),而不是hashMap,它不会在迭代时删除元素时为您提供concurrentmodificationexception