Java 允许通过Collection 接口的和方法计算(集合论)差和两个 Collection 对象的交集。removeAll()
retainAll()
这两个方法在Java 6的AbstractCollection 类中的实现是
public boolean removeAll(Collection<?> c) { // Difference
boolean modified = false;
Iterator<?> e = iterator();
while (e.hasNext()) {
if (c.contains(e.next())) {
e.remove();
modified = true;
}
}
return modified;
}
public boolean retainAll(Collection<?> c) { // Intersection
boolean modified = false;
Iterator<E> e = iterator();
while (e.hasNext()) {
if (!c.contains(e.next())) {
e.remove();
modified = true;
}
}
return modified;
}
有什么方法可以更快地实现或执行上述(显然很昂贵)操作?
例如,在计算差异或交集之前对集合进行排序是否会带来任何整体性能提升?
是否有任何类别的 Collections 框架更适合使用这些操作(在性能方面)?