Ordenar una List (ArrayList, Vector, ...) o una tabla

6460 vistas

Encontramos la solución en la clase java.util.Collections:



java
  1. List miLista = new ArrayList();
  2. Collections.sort(miLista);



miLista será ordenada en orden ascendente.

Para ordenarla de forma descendente tendremos que hacer:



java
  1. Collections.sort(miLista, Collections.reverseOrder());



Atención: este ejemplo funciona sólo si los elementos de la lista son de tipo Comparable, como int, String, Date,... (ver la interfaz java.lang.Comparable). Si no fuera el caso (los elementos son objetos definidos por nosostros mismos), nuestra clase tendrá que implementar la interfaz java.lang.Comparable. Veamos un ejemplo:



java
  1. class Coche {
  2.     String marca = "";
  3.     int nbCaballos = 0;
  4.  
  5.     public Coche(String s, int i) {
  6.         marca = s;
  7.         nbCaballos = i;
  8.     }
  9.  
  10.     public int getNbCaballos()  { return nbCaballos;  }
  11.     public String toString()  { return marca + "\t" + nbCaballos;  }
  12. }



Si queremos poder ordenar la lista de Coche según los caballos, tendremos que hacer la siguientes modificaciones a la clase:



java
  1. class Coche implements java.util.Comparable {
  2.   // método a implementar
  3.   /**
  4.     * @param other other tiene que ser del tipo Coche
  5.     */
  6.   public int compareTo(Object other) {
  7.       int num1 = ((Coche) other).getNbCaballos();
  8.       int num2 = this.getNbCaballos();
  9.       if (num1 > num2)  return -1;
  10.       else if(num1 == num2) return 0;
  11.       else return 1;
  12.   }
  13. }



Ahora podemos ordenar la lista de forma sencilla:



java
  1. Collections.sort(listaCoches);



Si se trata de una tabla, el cósigo es el mismo, simplemente tendremos que usar la clase Arrays.



java
  1. Arrays.sort(tablaCoches);



También tenemos la posibilidad de mezclar la lista de forma fácil gracias al método shuffle de Collections.