Ordenar listas de objetos es una de las tareas más usuales. La clase Collections brinda operaciones para ordenar listas y arrays. Para esto, recibe una implementación de la interfaz Comparator, que nos permite indicar cómo se ordenan los elementos.
Actividad
Vamos a partir con un ArrayList que contenga 5 objetos Producto (ver ejercicios anteriores).
- Creá un ArrayList con 5 objetos Producto, cada uno con un precio diferente. Ingresalos mezclados al ArrayList.
- Imprimí los elementos del ArrayList.
- Ordená los elementos del ArrayList por precio, de mayor a menor, usando
Collections.sort(productos)
.
- Hacé que la clase Producto implemente la interfaz
Comparable
.
- Imprimir nuevamente los elementos del ArrayList, y verificar que queden ordenados.
- Ordená los elementos del ArrayList por precio, de menor a mayor, usando
Collections.sort(productos, comparator)
.
- Creá una nueva clase que implemente
Comparator
.
- Usá
Collections.sort(productos, comparator)
para ordenar usando el Comparator anterior.
Consejos
- Los métodos Collections.sort() nos permiten ordenar listas.
- La interfaz Comparable compara al objeto que la implementa con otro objeto. Es usada por Collections.sort() para ordenar elementos, cuando no se le indica un
Comparator
.
- La interfaz Comparator permite comparar dos objetos. Es usada por
Collections.sort()
para ordenar elementos.
Preguntas
- ¿Qué es una interfaz? ¿Para qué sirven?
- ¿Cuál es la diferencia entre heredar de una clase e implementar una interfaz?
- ¿Cuál es la ventaja de hacer que nuestros objetos implementen Comparable para ordenar?
- ¿Cuál es la ventaja de usar un Comparator para ordenar?