删除Java ArrayList中的重复对象会导致并发修改错误

时间:2012-05-17 17:33:44

标签: java android listview arraylist

  

可能重复:
  Concurrent Modification Exception : adding to an ArrayList

我正在尝试使用此方法从arraylist中删除重复值:

 public void hasDuplicates(List<Artifact> p_cars) {
    final List<String> usedNames = new ArrayList<String>();
    for (Artifact car : p_cars) {
        final String name = car.getObjectId();

        if (usedNames.contains(name)) {
            p_cars.remove(car);

        }

        usedNames.add(name);
    }

}

如何在不同时修改arraylist的情况下删除这些重复值?

我在一个arraylist上这样做,如果这有助于上下文,则填充listview。

谢谢!

1 个答案:

答案 0 :(得分:6)

您在迭代时无法修改集合。唯一的例外是使用迭代器的remove方法:

 public void hasDuplicates(List<Artifact> p_cars) {
    final List<String> usedNames = new ArrayList<String>();
    Iterator<Artifact> it = p_cars.iterator();
    while (it.hasNext()) {
        Artifact car = it.next();
        final String name = car.getObjectId();

        if (usedNames.contains(name)) {
            it.remove();

        } else {
            usedNames.add(name);
        }
    }

}