Está en la página 1de 6

 La clase ArrayList implementa la interfaz List.

 Permite la ordenación de elementos (Collections.sort())

 Para ordenar la colección tenemos que implementar la interface Comparable


y Comparator.

Cuando una clase implementa una interface, obliga a sobrescribir los métodos de
esa interface. La interfaz Comparator nos servirá para poder ordenar colecciones de
objetos.

La diferencia entre un ArrayList y un LinkedList es la eficiencia.

Un ArrayList almacena los datos de forma contigua. Cuando eliminamos un


elemento, estamos obligados a cubrir ese espacio que ha quedado libre,
desplazando los siguientes elementos hacia arriba. Por lo tanto, no es muy
eficiente, consume bastantes recursos.

Un LinkedList almacena la información de manera diferente, mediante el uso de


nodos.

1
Si eliminamos un nodo, se actualizan los enlaces de los nodos afectados. Por lo
tanto, es más eficiente (consume menos recursos) que la eliminación de un
elemento en un ArrayList.

2
3
Método compareTo

Esta interfaz tiene un sólo método abstracto: compareTo, que nos sirve para ordenar
los valores según un orden natural, bien sea numérico o alfabético.

En nuestro ejemplo, podemos ordenador la colección a través de cualquier atributo


que compone la clase que implementa la interfaz Comparable.

Podemos ordenar nuestra colección por cualquiera de los atributos.

 El orden natural de los atributos de tipo String sería el orden alfabético


(ascendente o descendente).

 El orden natural del atributo de tipo Date sería el orden numérico


(ascendente o descendente).

Valores devueltos

Este método compara el objeto utilizado para invocar el método con el objeto
especificado en el parámetro.

Devuelve:

 0 en caso de que ambos objetos tengan el mismo orden (no haya uno
mayor que otro).
 un número entero negativo si el objeto actual es menor al objeto pasado
como parámetro
 un número positivo si el objeto actual es mayor al objeto pasado como
parámetro.

Partiendo de la clase Persona, sobrescribimos el método compareTo ordenando los


objetos por el atributo NIF.

4
Orden natural

Observamos que se ha ordenado la colección por su orden natural (orden


ascendente en este caso) mediante el atributo NIF.

Hemos visto que podemos utilizar cualquier atributo de la clase Persona para
ordenar la colección según el orden natural de los mismos.

Si hemos escogido el atributo NIF para ordenar la colección, ¿qué ocurre si


queremos ordenar los elementos por el atributo fechaNacimiento?

Pues que el orden natural definido no nos sirve y debemos de recurrir a la


interfaz Comparator para implementar el método compare (Object o1, Object o2)
definiendo el método deseado.

5
Atributo fechaNacimiento

Para ordenar la colección por el atributo fechaNacimiento, tendremos que crear una
nueva clase que implemente la interfaz Comparator.