Interfaces y ordenamiento de listas

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).

  1. Creá un ArrayList con 5 objetos Producto, cada uno con un precio diferente. Ingresalos mezclados al ArrayList.
  2. Imprimí los elementos del ArrayList.
  3. Ordená los elementos del ArrayList por precio, de mayor a menor, usando Collections.sort(productos).
    1. Hacé que la clase Producto implemente la interfaz Comparable.
  4. Imprimir nuevamente los elementos del ArrayList, y verificar que queden ordenados.
  5. Ordená los elementos del ArrayList por precio, de menor a mayor, usando Collections.sort(productos, comparator).
    1. Creá una nueva clase que implemente Comparator.
    2. 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

  1. ¿Qué es una interfaz? ¿Para qué sirven?
  2. ¿Cuál es la diferencia entre heredar de una clase e implementar una interfaz?
  3. ¿Cuál es la ventaja de hacer que nuestros objetos implementen Comparable para ordenar?
  4. ¿Cuál es la ventaja de usar un Comparator para ordenar?