Recomendado, 2024

La Elección Del Editor

Diferencia entre comparable y comparador en Java

Comparable y Comparator son las interfaces genéricas en Java que se utilizan para comparar los elementos de datos de los objetos. La interfaz comparable está presente en el paquete java.lang y la interfaz del comparador está presente en el paquete java.util. La diferencia básica entre las interfaces Comparable y Comparator es que la interfaz Comparable proporciona la única secuencia de clasificación, mientras que la interfaz Comparator proporciona las múltiples secuencias de clasificación. Existen algunas otras diferencias entre la interfaz Comparable y Comparator que estudiaremos en la Tabla de comparación.

Gráfica comparativa

Bases para la comparaciónComparableComparador
BASICLa interfaz comparable permite solo una secuencia de clasificación.La interfaz del comparador permite múltiples secuencias de clasificación.
PaquetesLa interfaz comparable está presente en el paquete java.lang.La interfaz del comparador está presente en el paquete java.util.
MétodosLa interfaz comparable contiene solo un método
public int compareTo (objeto obj);
La interfaz del comparador contiene dos métodos.
public int compare (Objeto obj1, Objeto obj2)
boolean equals (Object obj)
ImplementaciónLa interfaz comparable es implementada por la clase cuyos objetos se van a comparar.La interfaz del comparador se implementa mediante una clase sperate en lugar de la clase cuyos objetos se van a comparar.
ComparaciónEl método compareTo (Object obj) compara el objeto que se utiliza para invocar el método con el objeto especificado que se pasa al método.El método de comparación (Objeto obj1, Objeto obj2) compara los objetos especificados que se pasan al método.
Lista / ArrayCuando se debe comparar una lista del objeto de tipo Comparable, la clase Colección proporciona un método, por ejemplo, Collections.sort (List lst).Cuando se debe comparar una lista de objetos del tipo Comparable, la clase Colección proporciona un método, es decir,
Colecciones.sort (Lista, Comparador).

Definición de Comparable

Comparable es una interfaz que está disponible en el paquete java.lang. Una clase implementa la interfaz del Comparador, para ordenar su objeto en orden natural. Los objetos se clasifican en orden natural significa que los objetos se comparan por sus valores ASCII. Las clases que implementan la interfaz Comparable son las clases Byte, Character, Double, Float, Long, Short, String y Integer. Incluso la clase Date y Calander también implementa la interfaz Comparable.

La interfaz Comparable contiene solo un método que es CompareTo (objeto obj). Este método compara el objeto utilizado para invocar el método con el objeto especificado en el parámetro. La sintaxis del método es la siguiente:

 public int compareTo (objeto obj); 

El método CompareTo (Objeto obj) devuelve 0, cuando el objeto comparado por el método contiene el mismo valor, devuelve -ve valor si el objeto invocado es más pequeño que el objeto especificado y devuelve valor + ve si el objeto invocador tiene mayor valor en comparación con el objeto especificado. La clase Colecciones proporciona un método de clasificación para ordenar los elementos de la lista. Los elementos de lista (y matriz) del tipo Comparable pueden ordenarse usando el método "Collections.sort (List lst)".

Definición de comparador

Comparator es una interfaz que está disponible en el paquete java.util. El comparador de interfaz no se implementa en la clase cuyos objetos se van a comparar, en lugar de que la clase separada implemente la interfaz del comparador, de modo que la lógica de clasificación se aplique a cada elemento de datos del objeto en una clase diferente. Comparador contiene dos métodos de la siguiente manera:

 public int compare (Object obj1, Object obj2) y boolean equals (Object obj) 

El método compare () anterior compara el primer objeto obj1 con el segundo objeto obj2. El método compare () devuelve 0 cuando el objeto comparado por el método contiene el mismo valor, devuelve -ve valor si el objeto obj1 es más pequeño que el objeto obj2 y devuelve valor + ve si el objeto obj1 tiene un valor mayor en comparación al objeto obj2. Los métodos equals () comprueban si el objeto especificado es igual al objeto que invoca. El método equals () devuelve verdadero si los dos objetos comparados son iguales, de lo contrario, devuelve falso . La clase Colecciones proporciona el método para ordenar los elementos de lista y tipo de comparador. Los elementos de la lista de tipos de comparador están ordenados por el método Collections.sort (List, Comparator).

Diferencias clave entre comparable y comparador

  1. La interfaz comparable permite una única secuencia de clasificación, lo que significa que puede comparar solo el elemento de datos único del objeto en el método compareTo (), por otro lado, la interfaz del Comparador permite múltiples secuencias de clasificación que permiten comparar múltiples elementos de datos del objeto.
  2. La interfaz comparable es implementada por la clase cuyos objetos se van a comparar porque la lógica de clasificación está definida dentro de la misma clase. Por otro lado, la interfaz del comparador no está implementada por la clase cuyos objetos se van a comparar porque la lógica de clasificación se define en las clases separadas donde cada clase define la clasificación en un solo elemento de datos del objeto y estas clases definitorias implementan la interfaz del comparador .
  3. La interfaz comparable se encuentra dentro del paquete java.lang, mientras que la interfaz del comparador se encuentra dentro del paquete java.util.
  4. La interfaz Comparable declara solo un método que es compareTo (Object obj), mientras que la interfaz Comparator declara dos métodos que son: compare (Object obj1, Object obj2) e igual a (Object obj).
  5. El método compareTo (Object obj) en Comparable compara el método que invoca el objeto con el objeto especificado pasado al método mientras que el método compare (Object obj1, Object obj2) del Comparator compara los objetos obj1 con obj2 que se pasan al método.
  6. La clase Colecciones proporciona un método de clasificación "Collections.sort (List lst)" para ordenar los objetos del tipo Comparable. La clase Colecciones proporciona el método de clasificación Collections.sort (Lista, Comparador) para ordenar los objetos del tipo Comparador.

Conclusión:

Si desea ordenar los objetos en el orden natural, entonces puede usar la interfaz comparable; si no, para ordenar los objetos en función de cualquier atributo, se utilizará la interfaz del Comparador.

Top