Interfaz Comparable

Qué es Comparable?


Comparable es un interfaz de java, que esta creada o desarrollada dentro del JRE de java, por lo cual es necesario tan solo implementarla directamente en las clases con implements Comparable y especificar el tipo de clase (objeto).



Para qué sirve Comparable?


Comparable contiene una método abstracta compareTo el cual permite ordenar un objeto según un atributo especificado (String, Double, Integer, Int, etc), en un orden ascendente o descendente.


Cómo funciona compareTo?


CompareTo es un método abstracto que retorna un int (entero) para todos los casos, n=-1 si el objeto es menor, n=1 si el objeto es mayor, o n=0 si son iguales, dependiendo  del objeto existente que comparemos con el objeto de entrada, que va ser del tipo especificado en al implementación, lo sobrescribimos para cada caso.



Cómo comparar atributos?


A continuación para comparar dos atributos dentro de la clase podemos hacerlo de dos formas:

  • La primera forma es dentro de la descripción del valor de retorno restar del atributo existente this.atributo el atributo del objeto de entrada "o", o.getAtributo(); para un orden  Ascendente y viceversa para un orden Descendente.
  • La segunda forma es igualmente dentro de la descripción del valor de retorno especificar el atributo existente this.atributo punto compareTo y como parámetro, el atributo del objeto de entrada "o", o.getAtributo(); para un orden  Ascendente y viceversa para un orden Descendente.

Nota: Sin importar la forma de implementación solo se puede realizar la comparación entre mismos tipos de atributos; y ademas solo se puede sobrescribir una sola ves por clase el método comapreTo.


Cómo llamar comapreTo?


Para invocar el método comapreTo y lograr su correcto funcionamiento, primero debe existir un Array o ArrayList dentro de la clase donde se va a realizar el ordenamiento. Segundo necesitaremos de una colección  (Collections)la cual nos permite agilizar el acceso a los datos y del método sort que nos permite ordenar un array. Se lo llama así.




Ejemplos

Para el siguiente programa, aplicando la interfaz Comparable ordenar según:

a.  edad.
b.  ira.
c.  nombre.

Primero creamos el programa:

-> Una clase Estudiante, con su respectivo encapsulamiento de sus atributos: (String) No.Unico, (String) Nombre, (Calendar) Fecha de Nacimeinto, (Double) ira. Y adicionalmente un método que nos calcule la edad.



-> Una clase Curso que contenga un ArrayList de Estudiantes con su escapsulamiento, y los métodos de agregar e imprimir array.



-> Una clase Aplicación donde vamos a ingresar todos los datos.


Lo siguiente nos dará el siguiente resultado, después de su compilación.



Segundo implementamos la interfaz Comparable en la clase Estudiante:


Tercero agregamos el método abstracto compareTo y lo sobrescribimos desarrollando según el atributo que vayamos a comparar, para un ordenamiento ascendente de:

     a. Edad

     b. Ira

     c. Nombre

Nota: Para cada caso es un programa individual, solo varia esta sección del código.


Cuarto llamamos al método abstracto compareTo en un nuevo método llamado ordenamiento, en la clase curso donde llevaremos a cabo al gestión de estudiantes.


Quinto llamamos al método ordenamiento y mostramos al lista de estudiantes ordenada dentro del main en la clase aplicación.

     a. Edad

     b. Ira


     c. Nombre

Finalmente visualizamos cada uno de los resultados.

     a. Edad

     b. Ira

     c. Nombre




Ejemplo edad

Estudiante
Curso
Aplicacion


1 comentario:

  1. hola, un consejo. Cuando digas que se agrega algo, di donde, ya que no decirlo confunde y entorpece el entendimiento.
    ser claro y no redundate.

    ResponderBorrar