Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/01/2008, 19:53
Avatar de TolaWare
TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 10 meses
Puntos: 24
Re: Ordenar ArrayList

Para que la clase ArrayList pueda ordenarte los objetos que contiene, primero tienes que decirle cuando un objeto es mayor, menor, o igual que otro.

Para los tipos primitivos como números y cadenas, esto no es necesario ya que la lógica de mayor, menor o igual ya es conocida, pero para los objetos en general Java no conoce esta lógica.

Para ello, tienes que implementar en la clase Dirección el método compareTo(Object o) el cuál está presente en la interfaz Comparable por lo que tu clase Dirección debe implementar Comparable.

Algo así:

Código:
public class Direccion implements Comparable {

    // Lista de atributos y métodos

    public int compareTo(Object o) {
        // logica de comparacion
        return resultadoComparacion;
    }

}
La lógica de comparación debe responder de la siguiente manera:

Un número negativo si la referencia this es menor que el objeto o.
Un 0 si la referencia this es igual que el objeto o.
Un número positivo si la referencia this es mayor que el objeto o.

Por ejemplo, si la clase Dirección tiene un atributo int llamado "importancia" y quieres establecer el órden a partir de este atributo, la implementación del método compareTo debería ser:

Código:
public int compareTo(Object o) {
        Direccion dir = (Direccion)o;
        if(this.importancia < dir.getImportancia())
            return -1;
        else if(this.importancia == dir.getImportancia())
            return 0;
        else
            return 1;
}


Espero haberte ayudado.