Debido a que en los últimos tiempos esta parece ser una de las preguntas más frecuentes que aparecen, me he decidio a escribir este pequeño ejemplo sobre como ordenar elementos. Este ejemplo no trata de ser una guía de buena programación, si no que trata simplemente de enseñar la manera de ordenar fácilmente colecciones de elementos.
Como toda persona que trabaja con Java debería saber, el API de Java es muy rico, y contiene ya mucho del código genérico que nuestra aplicación pueda necesitar. Solo hay que saber buscarlo.
Este es el caso de la ordenación de elementos, que viene ya implementada, con un algoritmo de los más eficientes, el mergesort. Además, date cuenta de que, como dice el título, este artículo trata el ordenamiento de objetos, no elementos primitivos.
Gran parte de la magia en la ordenación de objetos que ofrece Java2 es culpa del buen diseño del API Collections, que ofrece el conjunto de funcionalidad básica para tratamientos de conjuntos de elementos. Este API es capaz de ordenar todos los objetos de clases que implementen el interface java.lang.Comparable, que contiene un solo método:
Method Summary
int compareTo(Object o)
Compares this object with the specified object for order.
El entero que devuelve este método será el equivalente a objeto1 - objeto2, es decir:
objecto1.comparteTo(objeto2);
negativo si objeto1 < objeto2
cero si objeto1 = objeto2
positivo si objeto1 > objeto2
Lo que decida si un objeto es mayor o menor que otro es lo que tenemos que hacer nosotros. Por supuesto gran parte de las clases básicas del API de Java, como String, Integer, File, Date y demás, ya la implementan, con el orden esperado (alfabético, ordinal, cronológico, etc), así que solo tendremos que preocuparnos de este interface con nuestras clases propias más complejas, como por ejemplo, Usuario:
class Usuario{
private String nombre;
private int edad;
Usuario(String nombre, int edad) {
this.nombre = nombre;
this.edad = edad;
}
public String getNombre() {
return nombre;
}
public int getEdad() {
return edad;
}
public String toString() {
return nombre + " (" + edad + ")";
}
}
Usuarios que han visto este tema también han visto...
- Frame lookup Swing en Java
- Leer fichero de texto con Java
- Creación de una Clase utilizando otra ya creada
- Estructura general de un programa Java
- Entrada y Salida estándar en Java
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.