Si desea encontrar duplicados, y no sólo la eliminación de ellos, un enfoque sería tirar la colección en una matriz, ordenar la matriz a través de un comparador que implementa sus criterios, entonces linealmente caminar a través de la matriz, mirando para duplicados adyacentes.
Aquí es un boceto (no probado):
MyComparator myComparator = new MyComparator();
MyType[] myArray = myList.toArray();
Arrays.sort(myArray, myComparator);
for (int i = 1; i < myArray.length; ++i) {
if (0 == myComparator.compare(myArray[i - 1], myArray[i])) {
// Found a duplicate!
}
}
Editar: Desde su comentario, lo que desea saber si hay son duplicados. El enfoque anterior también funciona para esto. Pero podría simplemente crear un java.util.SortedSet con un comparador personalizado. He aquí un esbozo:
MyComparator myComparator = new MyComparator();
TreeSet treeSet = new TreeSet(myComparator);
treeSet.addAll(myCollection);
boolean containsDuplicates = (treeSet.size() != myCollection.size());
¿De qué manera desea especificar los criterios de deduplicación? Como un predicado binario? – NPE
¿Desea * encontrar * los duplicados, o * eliminar * ellos? –
@ AndyThomas-Cramer En realidad, sería suficiente solo para saber si hay duplicados. –