Cross vergleichen ArrayList-Elemente, und entfernen Sie Duplikate

Ich habe eine ArrayList<MyObject> dass kann (muss aber nicht) enthalten Duplikate von MyObject muss ich aus der Liste entfernen. Wie kann ich dies in einer Weise, dass ich nicht haben, um zu überprüfen, Vervielfältigung zweimal als würde ich tun, wenn ich waren zum Durchlaufen der Liste in zwei for-Schleifen und Kreuz überprüfen jedes Element mit jedem anderen Element.

Brauche ich nur um zu überprüfen, jedes Element einmal, so dass der Vergleich A:B ist genug - ich will nicht zu vergleichen B:A wieder, als ich bereits getan habe.

Außerdem; kann ich einfach entfernen Sie Duplikate aus der Liste , während looping? Oder wird das irgendwie teilen Sie die Liste und meine Schleife?

Edit: Okay, ich habe vergessen, ein wichtiger Teil der Suche über die ersten Antworten: Ein doppelte von MyObject ist nicht nur gemeint, in die Java Art Sinn Objekt.equals(Object), aber ich muss in der Lage sein zu vergleichen, Objekte mit Hilfe meines eigenen Algorithmus, der die Gleichheit der MyObjects wird berechnet mit einem Algorithmus, der überprüft das Objekt Felder in einer besonderen Weise, die ich implementieren muss!

Desweiteren kann ich nicht einfach überschreiben euqals im MyObject da gibt es mehrere, verschiedene Algorithmen, die die Implementierung der verschiedenen Strategien, die zur überprüfung der Gleichheit zweier MyObjects - z.B. gibt es eine einfache HashComparer und eine komplexere EuclidDistanceComparer sowohl als AbstractComparers Implementierung verschiedener algorithmen für die public abstract boolean isEqual(MyObject obj1, MyObject obj2);

  • Ein TreeSet mit einem benutzerdefinierten Komparator sollte den trick tun.
InformationsquelleAutor F.P | 2012-01-17
Schreibe einen Kommentar