example - implements comparator java
Java: Comparable vs Comparador (2)
Posibles duplicados:
diferencia entre compare () y compareTo ()
Java: ¿Cuál es la diferencia entre implementar Comparable y Comparator?
¿Cuáles son las diferencias clave entre Comparable y Comparator?
¿y cuál es preferido sobre el otro en qué escenarios?
Gracias
Actualizado - ¡BUEN ENLACE CON EJEMPLO!
http://www.digizol.com/2008/07/java-sorting-comparator-vs-comparable.html
Comparator
proporciona una forma de proporcionar una lógica de comparación personalizada para tipos sobre los que no tiene control.
Comparable
permite especificar cómo se comparan los objetos que está implementando.
Obviamente, si no tiene control sobre una clase (o si desea proporcionar múltiples formas de comparar objetos sobre los que sí tiene control), utilice el Comparator
.
De lo contrario, puede usar Comparable
.
Cuando su clase implementa Comparable , el método compareTo
de la clase define el orden "natural" de ese objeto. Ese método está contractualmente obligado (aunque no exigido) a estar en línea con otros métodos en ese objeto, como que siempre se debe devolver un 0 para objetos cuando las comparaciones de .equals()
devuelven verdadero.
Un Comparator es su propia definición de cómo comparar dos objetos, y se puede usar para comparar objetos de una manera que podría no coincidir con el orden natural.
Por ejemplo, las cadenas generalmente se comparan alfabéticamente. Por lo tanto, el "a".compareTo("b")
usaría comparaciones alfabéticas. Si quisiera comparar cadenas en longitud, necesitaría escribir un comparador personalizado.
En resumen, no hay mucha diferencia. Ambos son fines a medios similares. En general, implementar es comparable para el orden natural, (la definición de orden natural está obviamente abierta a la interpretación), y escribir un comparador para otras necesidades de clasificación o comparación.