Artículos
Java

Elemento máximo y mínimo de un conjunto con Objetos

08/Jul/2007

En el ejemplo de Calculo del número máximo y mínimo de un conjunto veíamos que el algoritmo de cálculo implementado por el FrameWork de las colecciones confiaba en que el tipo de dato utilizado en el conjunto tenía implementado la función compareTo. Lo cual sucede en los tipos de datos básicos.

Esto no implica que aquellos tipos de datos que no lo implementen dicho método no puedan utilizar las funciones del FrameWork.

Además de las funciones…

.max(conjunto)
.min(conjunto)

Tenemos otras dos…

.max(conjunto, comparator)
.min(conjunto, comparator)

Estas operaciones sirven para decirle al algoritmo: dame el máximo y mínimo elemento del conjunto y utiliza el objeto comparator que es el que sabe comparar los elementos del conjunto.

La verdad es que hablar del objeto comparator es algo erroneo, ya que Comparator es un Interface. Dicho interface nos especifica los métodos que hay que implementar para que dos elementos puedan ordenarse.

Dos son los métodos del Interface Comparator

int compare(Object o1, Object o2)
boolean equals(Object obj)

Deberemos de implementar estos métodos en una clase, la cual, será la que pasemos como parámetro a las funciones de máximo y de mínimo.

Para nuestro ejemplo supongamos que partimos de la clase Persona que será de la siguiente forma….

Class Persona {
     int iEdad;
     String sNombre;
}

El objeto compare deberá saber como comparar dos personas. El método devolverá un número positivo si la primera persona es menor que la segunda, cero si las personas son iguales y un número negativo si la segunda persona es mayor que la primera.

Asumimos que comparamos a las personas por su edad, quedándonos la siguiente implementación del método compare…

Comparator comparador = new Comparator(){
    public int compare(Persona p1, Persona p2) {
        return (p1.getEdad()-p2.getEdad());
    }
};

Por último bastará con pasarle el comparador a las funciones de mínimo y máximo.

System.out.println(Collections.max(hs2,comparador).getNombre());
System.out.println(Collections.min(hs2,comparador).getNombre());

Código Fuente

Descárgate el código fuente de Elemento máximo y mínimo de un conjunto con Objetos
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Suscribir
Notificar de
guest
3 Comentarios
Recientes
Anteriores Más votados
Opiniones integradas
Ver todos los comentarios