Elemento maximo y minimo de un conjunto con Objetos Julio 8, 2007
Publicado por lineadecodigo en : Java , trackbackEn 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<Persona> comparador = new Comparator<Persona>(){
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());
Visualizar el ejemplo | Descargar el código
Articulos Similares:
- Máximo y mínimo número de un conjunto
- Crear un objeto en Javascript
- Ordenando alfabéticamente con CASE_INSENSITIVE_ORDER
- Controlar las coordenadas del ratón en un Applet
- Invertir una Lista
Enviar entrada por email
|
Imprimir
| 7216 visitas





Comentarios»
tiernes puesto en los dos prints max uno tiene q ponerlo min ^^ sino te da dos veces el ams viejo ^^ por lo demas bien
@gaudy,
Muchas gracias por ver la errata. Ya está corregido.
“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.”
- numero positivo, si el pimero es menor que el segundo.
- cero, si son iguales
- numero negativo, si el segundo es mayor que el primero
???
- numero positivo, si el primero es mayor que el segundo .. (deberia ser asi no ? )
saludos.