Comparable vs Comparador: diferencia entre comparable y comparador
Publicado: 2020-12-30Tabla de contenido
Comparable y comparador: una descripción general
Comparable y comparador son ambas interfaces en el lenguaje de programación Java para determinar el comportamiento en el que se implementarán las clases. Mientras que Comparable se usa en objetos que están ordenados de forma natural, la interfaz Comparator implementa la clasificación teniendo en cuenta los atributos de un objeto. Además, la clasificación de Comparator tiene en cuenta objetos de dos clases diferentes y Comparable compara objetos usando la referencia "this".
Ahora que hemos establecido el principio básico sobre el que funcionan ambas interfaces, veamos las diferencias entre las dos.
Diferencia entre comparable y comparador
Método de clasificación
Comparable
Utiliza la función compareTo() para ordenar. Este es el único método presente en la interfaz de clasificación Comparable.
compareTo(Object O) toma como argumento un objeto y lo compara con otro del mismo tipo. Si un objeto es una cadena, solo puede compararlo con otro objeto del mismo tipo. Lo mismo ocurre con un objeto int y así sucesivamente. compareTo() devuelve un valor entero negativo, positivo o cero en función del resultado de la clasificación.
comparador
Hay dos métodos para ordenar elementos en Comparator: compare() y equals().
compare(Object O1, Object O2) tiene en cuenta dos argumentos como entrada y proporciona la salida deseada. Devuelve un entero para indicar cómo se compara el primer argumento con el segundo.

- Si O1 es menor que O2, devuelve un entero negativo.
- Si O1 es mayor que O2, devolverá un entero positivo.
- Si O1 es igual a O2, devuelve 0.
equals(Object) tiene en cuenta un objeto como entrada y lo compara con el comparador. Devuelve True si el Objeto es igual al Comparador. También asegura que el orden no cambia.
Paquete utilizado
Comparable
Existe en el paquete java.lang de Java.
comparador
Existe en el paquete java.util de Java.

Ordenamiento y Clase
Comparable
- Tiene en cuenta los objetos que siguen un orden natural, es decir, tienen tendencia a clasificarse por sí mismos. Por ejemplo, orden alfabético u orden numérico en caso de nombres, precio, salario, número de rol, edad, etc.
- También es importante que ambos objetos pertenezcan a la misma clase.
- La interfaz comparable compara "esta" referencia con el objeto especificado.
- Ordenar usando Comparable afecta la clase real.
comparador
- Esta interfaz se utiliza principalmente para ordenar atributos de objetos específicos. No necesitan tener un orden natural; se puede personalizar
- Se requiere que la lógica de clasificación esté en clases separadas para comparar los atributos de los objetos de las dos clases en consideración.
- La clase real no se ve afectada.
Secuencias y Colecciones
Comparable
- Solo admite secuencias de clasificación únicas. Esto implica que solo puede considerar un elemento o atributo de una colección, como un número de registro, una edad o un rango.
- Para ordenar una colección de objetos, matrices o listas, puede usar Collection. ordenar (Lista) o Matrices. Lista Ordenada). Esto traerá los objetos en su orden natural .
comparador
- Admite múltiples secuencias de clasificación. Esto implica que puede considerar múltiples elementos o atributos de una colección, como el número de registro, la edad y el rango.
- Puede usar un collection.sort (lista, comparador) para ordenar una colección.
Aquí hay un resumen de todas las diferencias entre Comparable y Comparator

Comparable | comparador |
Paquete | |
Java.lang | Java.util |
Método de clasificación | |
comparar con() | comparar() |
ordenar | |
Ordenamiento Natural | Pedidos personalizados |
Tipo de objeto | |
Los objetos en comparación deben ser del mismo tipo. | Se consideran objetos de diferentes clases. |
Efecto en la clase | |
La clase se modifica | No afecta a la clase. |
Secuencia de clasificación | |
Secuencia de clasificación única | Secuencia de clasificación múltiple |
Inscríbase en cursos de desarrollo de software de las mejores universidades del mundo. Obtenga programas Executive PG, programas de certificados avanzados o programas de maestría para acelerar su carrera.
Cosas a tener en cuenta al usar Comparable y Comparator en Java
- La interfaz comparable es la que debe optar si está vendiendo para realizar una comparación estándar para una clase específica.
- El comparador permite el uso de lambda.
- Puede usar el método compareTo() para implementar Comparator y Comparable.
- Se recomienda la interfaz del comparador si busca flexibilidad en la clasificación
Conclusión
En la mayoría de los escenarios de la vida real, cuando clasificamos, generalmente tenemos una variedad de parámetros en mente. Además, dado que el uso de resultados comparables en la clasificación predeterminada y no se puede cambiar dinámicamente, es menos práctico que Comparator, que le permite personalizar y elegir entre diferentes métodos de clasificación para satisfacer sus necesidades. Solo por esta razón, Comparator encuentra más aplicaciones prácticas que Comparable.
Leer: Algún proyecto java interesante para ver
Si está interesado en obtener más información sobre Java, desarrollo de pila completa, consulte el programa Executive PG de upGrad & IIIT-B en desarrollo de software de pila completa, que está diseñado para profesionales que trabajan y ofrece más de 500 horas de capacitación rigurosa, más de 9 proyectos, y asignaciones, estado de ex alumnos de IIIT-B, proyectos finales prácticos y asistencia laboral con las mejores empresas.
¿Qué son las interfaces en los lenguajes de programación?
¿Es fácil aprender Java?
Java introduce un paradigma de programación orientado a objetos, lo que permite que incluso los desarrolladores de Java más inexpertos piensen y creen programas como un desarrollador experimentado. Java se originó a partir de los lenguajes de programación C y C++ que también se utilizan ampliamente en la actualidad. Si bien Java tiene algunas similitudes con C y C++ en términos de funcionalidad, se ha convertido en un lenguaje mucho más fácil de usar. Debido a que la programación orientada a objetos simplifica el mantenimiento y la modificación del código existente, incluso los programadores novatos pueden comenzar a trabajar en proyectos corporativos. Es menos probable que los nuevos desarrolladores encuentren fallas de tiempo de ejecución imprevistas, ya que Java se verifica en busca de errores antes de la ejecución. Java obliga a los programadores a especificar correctamente todos los elementos del código, lo que reduce las posibilidades de errores a medida que crecen las aplicaciones.
¿Por qué es necesaria la clasificación en Java?
Ordenar se refiere a un conjunto de técnicas para reorganizar los lugares de los elementos en una matriz de modo que estén todos en orden ascendente o descendente. Un algoritmo de ordenación decente también debe garantizar que los elementos con el mismo valor permanezcan en la matriz ordenada en el mismo orden. La clasificación es necesaria para comprender en profundidad las estructuras de datos y los algoritmos. Java como lenguaje de programación es excepcionalmente versátil y se puede utilizar para implementar una serie de algoritmos de clasificación. La mayoría de estos algoritmos son bastante versátiles y pueden implementarse tanto de manera recursiva como iterativa.