Foros del Web » Programación para mayores de 30 ;) » Java »

Ordenar ArrayList

Estas en el tema de Ordenar ArrayList en el foro de Java en Foros del Web. Buen día a todos. Tengo un inconveniente, desearía ordenar un ArrayList de un tipo determinado (en este caso el array es cargado con objetos del ...
  #1 (permalink)  
Antiguo 03/01/2008, 12:29
 
Fecha de Ingreso: diciembre-2007
Mensajes: 10
Antigüedad: 16 años, 4 meses
Puntos: 0
Ordenar ArrayList

Buen día a todos.
Tengo un inconveniente, desearía ordenar un ArrayList de un tipo determinado (en este caso el array es cargado con objetos del tipo "Direccion" de e-mails) pero al intentar usar el collections.sort me da error.
Alguien podría ayudarme a ordenar un ArrayList?

Desde ya GRACIAS!
  #2 (permalink)  
Antiguo 04/01/2008, 19:53
Avatar de TolaWare
Colaborador
 
Fecha de Ingreso: julio-2005
Mensajes: 4.352
Antigüedad: 18 años, 9 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.
  #3 (permalink)  
Antiguo 09/01/2008, 12:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 10
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Ordenar ArrayList

Muchas gracias!

Lo que ocurría era que no tenía el criterio de ordenación definido
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:15.