El objetivo de este ejemplo es solventar la necesidad de encontrar dentro de un conjunto el número mínimo y máximo del mismo.
Podríamos implementar un algoritmo donde recorriendo todos los elementos del conjunto fuésemos preguntando si el elemento es el más pequeño o es el más grande.
Si bien, vamos a apoyarnos en el framework Collection para llevar a cabo esta casuistica.
Dentro del framework Collection encontramos dos operaciones:
- .min(conjunto), devuelve el mínimo elemento del conjunto.
- .max(conjunto), devuelve el máximo elemento del conjunto.
Lo primero será el crear el conjunto e incluirle elementos:
Set hs = new HashSet();
hs.add(2);
hs.add(4);
hs.add(6);
hs.add(8);
El conjunto es representado por la clase Set, si bien la implementación es un HashSet. El método para añadir los elementos será .add(elemento).
Ahora solo nos quedará invocar a los métodos .max y .min:
System.out.println("El número mayor del conjunto es... "
+ Collections.max(hs));
System.out.println("El número menor del conjunto es... "
+ Collections.min(hs));
Invocando dichas operaciones nos olvidamos de cualquier implementación del algoritmo que calcule el mínimo y el máximo. Pero, nos surge una duda ¿Cómo saben estos métodos realizar la comparación entre los números? ¿Y si fuese otro tipo de datos?.
A la hora de utilizar dichas operaciones, el framework espera que los elementos de los cuales queremos saber su mínimo y máximo se les pueda aplicar la función compareTo. Clases como Integer, Float,… ya implementan dicha función.
No quiere decir que a elementos que no contengan esta función no se les pueda aplicar operaciones del framework Collections, ya que existe la posibilidad de implementar el interface Comparator para buscar una solución.