尝试在列表中删除所有时的ConcurrentModificationException(不迭代)

时间:2016-08-11 14:30:40

标签: java android

这里有一些奇怪的行为,因为我没有遍历列表。

public boolean deleteEvents(ArrayList<EventsModel> list) {
    boolean success = false;
    synchronized (lock) {
        ArrayList<EventsModel> listClone = (ArrayList<EventsModel>) list.clone();
        success = processDelete(listClone);
    }
    return success;
}

private boolean processDelete(List<EventsModel> list) {
    boolean success = false;
    if (list.size() > 999) {
        List<EventsModel> subList = list.subList(0, 998);
        list.removeAll(subList); // blows up with ConcurrentModificationException
        // 
    } else {
        //
    }
    return success;
}

我没有正确使用removeAll吗?

1 个答案:

答案 0 :(得分:0)

您将subList()与removeAll结合使用是导致此异常的原因。您可以阅读有关subList的javadoc以了解更多信息。