可能重复:
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。
谢谢!
答案 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);
}
}
}