Diferencia entre Comparable y Comparator en Java

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 13 Mayo 2024
Anonim
Tutorial java #33 - CompareTo y Compare (Comparable y Comparator)
Video: Tutorial java #33 - CompareTo y Compare (Comparable y Comparator)

Contenido

Comparable y Comparator son las interfaces genéricas en Java utilizadas para comparar los elementos de datos de los objetos. La interfaz Comparable está presente en el paquete java.lang y la interfaz 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 secuencia de clasificación única, mientras que la interfaz Comparator proporciona las secuencias de clasificación múltiples. Hay algunas otras diferencias entre la interfaz Comparable y Comparator que estudiaremos en el Cuadro comparativo.


  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

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


Definición de comparable

Comparable es una interfaz que está disponible en el paquete java.lang. Una clase implementa la interfaz Comparator para ordenar su objeto en orden natural. Los objetos están ordenados 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 e Integer. Incluso la clase Date and Calander también implementa la interfaz Comparable.

La interfaz Comparable contiene solo un método que es CompareTo (Object 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 (Object obj) devuelve 0, cuando tanto el objeto comparado por el método contiene el mismo valor, devuelve -ve valor si el objeto que invoca es más pequeño que el objeto especificado y devuelve + ve valor si el objeto que invoca tiene un valor mayor 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 la lista (y matriz) de tipo Comparable se pueden ordenar utilizando el método "Collections.sort (List lst)".


Definición de comparador

Comparator es una interfaz que está disponible en el paquete java.util. La interfaz Comparator no se implementa en la clase cuyos objetos se van a comparar, sino que la clase separada implementa la interfaz Comparator para que la lógica de clasificación se aplique a cada elemento de datos del objeto en una clase diferente. Comparator 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 tanto 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 + ve valor si el objeto obj1 tiene mayor valor en comparación con el objeto obj2. El método equals () comprueba si el objeto especificado es igual al objeto que invoca. El método equals () devuelve cierto si los dos objetos comparados son iguales, de lo contrario, devuelve falso. La clase Colecciones proporciona el método para ordenar los elementos de la lista y el tipo de comparador. Los elementos de lista de los tipos de comparador se ordenan por el método Collections.sort (List, Comparator).

  1. La interfaz comparable permite una secuencia de clasificación única, lo que significa que puede comparar solo un solo elemento de datos del objeto en el método compareTo (). Por otro lado, la interfaz del comparador permite múltiples secuencias de clasificación que significan que puede 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 se define dentro de la misma clase. Por otro lado, la interfaz Comparador no es implementada por la clase cuyos objetos deben ser comparados 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 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) y equals (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) de 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 Colecciones.sort (Lista, Comparador) para ordenar los objetos de tipo Comparador.

Conclusión:

Si desea ordenar los objetos en el orden natural, puede usar la interfaz comparable, de lo contrario, desea ordenar los objetos en función de cualquier atributo, entonces se usa la interfaz Comparator.