【发布时间】:2012-05-25 07:38:08
【问题描述】:
可能重复:
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);
}
}
如何在不同时修改数组列表的情况下删除这些重复值?
如果对上下文有帮助,我会在填充列表视图的数组列表上执行此操作。
谢谢!
【问题讨论】:
-
旁注:该方法应命名为“removeDuplicates”,并且应使用 Set
来跟踪使用的名称。 -
@JB 所说的...或
usedNames.add(name)应该在else { }块中。 -
@Dilum:将它放在 else 块中仍然会导致 O(n) 查找,而不是使用 HashSet 的 O(1)。 Set 是唯一值的自然选择。
标签: java android listview arraylist