For循环中的java.util.ConcurrentModificationExceptio...

codeday· 2019-10-21
本文来自 codeday ,作者 codeday
我正在尝试编写IM软件,
我想让用户离开对话,并告诉他的伴侣他已经离开了…
我更喜欢使用for循环而不是Iterator,查找所有用户并获取要离开并删除他的用户…像这样:

   for(Clientuser Cu: EIQserver.OnlineusersList)
          if(Cu.ID.equals(thsisUser.ID)) // find the user who ask to leave 
          {
          Omsg.setBody("@@!&$$$$@@@####$$$$"); //code means : clien! ur parter leaves...
                 sendMessage(Omsg); // sed message to thje partner with that code
                 EIQserver.OnlineusersList.remove(Cu);// remove the partner
                EIQserver.COUNTER--;// decrease counter.

          }

我得到异常:java.util.ConcurrentModificationException

我正在使用迭代器,为了摆脱此异常,我将其转换为for,但是仍然出现相同的异常!
我如何摆脱这个例外?

最佳答案
使用Iterator而不是循环.例如:

Iterator<Clientuser> iterator = EIQserver.OnlineusersList.iterator();
while (iterator.hasNext()) {
    Clientuser next = iterator.next();
    if(next.ID.equals(thsisUser.ID)) {
        Omsg.setBody("@@!&$$$$@@@####$$$$"); 
        sendMessage(Omsg); 
        iterator.remove();// remove the partner
    }
}