debug_mode=ON

Buscar en

 
 

Interfaces Comparator y Comparable (I)

Escrito por ocell hace 1 años bajo una licencia de Creative Commons Creative Commons License
1844 visitas. Etiquetas: good-practices, java, comparation, comparable, interface

Es posible que en ocasiones nos veamos obligados a ordenar o comparar clases que nosotros hemos implementado y que bien no pueden seguir unos criterios de comparación triviales. Por ejemplo al implementar la clase Persona y añadir n instancias en un vector, quizás aparezca la necesidad de ordenar dicho arreglo de personas. Está claro que recorriendo el vector y moviendo los objetos aplicando nuestro propio criterio se lograría el fin. Pero también es interesante conocer otras opciones. Si la elección de la plataforma y el lenguaje es *Java, la implementación de la interfaz Comparable en la clase Persona es la forma más limpia, elegante y reusable para poder aplicar posteriormente una comparación entre objetos Persona. Para cumplir con el contrato* de la interfaz únicamente estamos obligados a implementar el método:

public int compareTo(Object obj) throws ClassCastException;

dónde se debe devolver un valor negativo (-1) si nuestra instancia es menor que la instancia obtenida por parámetro, cero (0) si ambas instancias son iguales y un valor positivo mayor que cero (1) si nuestra instancia es mayor que la obtenida por parámetro. De igual manera se debería lanzar una excepción si la instancia obtenida por parámetro no es una instancia de la clase implementada.

Al implementar este método a la clase Persona, es posible ordenar y comparar objetos Persona que se encuentren en contenedores como Vector, Stack, TreeSet, etc. o en un vector de Personas (Persona[]). A diferencia de clases como TreeSet que ya ordena al añadir objetos, cuando se quiera obtener un objeto Vector, Stack, etc. o un vector ordenado, utilizaremos el método de clase Collections.sort(..), y volià al contenedor se le aplicará una ordenación siguiendo el método de ordenación implementado para Persona, que bien podría aplicarse a la edad, altura, peso, etc.

En el siguiente post (de ésta serie) y a través de un ejemplo, se mostrará lo explicado y los resultados obtenidos así como una introducción a la interfaz *Comparator*.

Más información al igual que la fuente original del artículo, en ROTB.

 

¡Votalo! 2 votos
¡Compártelo!

        

&nbps;

&nbps;

ocell

Sobre ocell

Este usuario no ha completado su perfil.

 
Regístrate o haz login para participar.
¿Todavía no conoces debugmodeon?
debugmodeon es la red social para profesionales de la informática
descubre debugmodeon
 

3 comentarios en "Interfaces Comparator y Comparable (I)"

gimenete
gimenete escribió
hace 1 años

#1   

Un ejemplo completo hubiera estado bien! :)

 

ocell
ocell escribió
hace 1 años

#2   

Je, je... es la primera parte! En la segunda explicaré un ejemplo completo e introduciré el siguiente interfaz.

 

jsanca
jsanca escribió
hace 1 años

#3   

Un ejemplo sencillo es envolver (wrapper) un comparador y multiplicarlo por -1, para hacer un orden inverso. No tenes que codificar mucho y resulta facíl de entender.

Saludos,
J

 
 
 
 

© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |