Java では、Collection インターフェースのおよびメソッドを介して、2 つの Collection オブジェクトの(集合論的) 差と交差を計算できます。removeAll()
retainAll()
Java 6のAbstractCollection クラスでのこれら 2 つのメソッドの実装は、
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;
}
上記の(明らかに高価な)操作をより速く実装または実行する方法はありますか?
たとえば、差や交差を計算する前にコレクションをソートすると、全体的なパフォーマンスが向上しますか?
これらの操作を使用するために(パフォーマンス的に)好ましいコレクションフレームワークのクラスはありますか?