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

标签 java android listview arraylist

<分区>

Possible Duplicate:
Concurrent Modification Exception : adding to an 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);
    }

}

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

如果对上下文有帮助,我将在填充 ListView 的数组列表上执行此操作。

谢谢!

最佳答案

在遍历集合时不能修改它。唯一的异常(exception)是使用迭代器的 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);
        }
    }

}

关于java - 删除Java ArrayList中的重复对象导致并发修改错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10640604/

相关文章:

android - Android:在手机移动时播放音频时,耳机上会听到喀嗒声

listview中的android更新进度条

java - Gradle Maven Bom 属性

java - 如何在按下空格键时使用 Jquery 自动完成功能获取数据?

android - 检查缓存 picasso 中是否存在图像

android - 如何将android应用程序连接到远程数据库?

java - 如何在android的 ListView 中返回点击的阀门?

java - 生成与双引号字符串完全匹配的过滤器机制,并包含与单引号类似的功能

java - 选择器最多可以选择多少个 channel ?

android - 文本对齐对齐和最后一行右对齐不适用于从右到左的语言