import java.util.Comparator;
public class EdadComparator implements Comparator{
public int compare(Object o1, Object o2) {
Empleado u1 = (Empleado) o1;
Empleado u2 = (Empleado) o2;
return u1.getEdad() - u2.getEdad();
}
public boolean equals(Object o) {
return this == o;
}
}
import java.util.Comparator;
public class NombreComparator implements Comparator {
public int compare(Object o1, Object o2) {
Empleado u1 = (Empleado) o1;
Empleado u2 = (Empleado) o2;
return u1.getNombre().compareTo(u2.getNombre());
}
public boolean equals(Object o) {
return this == o;
}
}
import java.util.*;
public class Test
{
public static void main(String[] args)
{
List<Empleado> plantilla = new ArrayList();
plantilla.add(new Empleado("Harry", 35));
plantilla.add(new Empleado("Carl", 45));
plantilla.add(new Empleado("Tony", 38));
Collections.sort(plantilla, new NombreComparator());
System.out.println("Empleados ordendados por nombre: ");
for (Empleado emp : plantilla)
{
Empleado e = emp;
System.out.println("Nombre=" + e.getNombre()
+" " + "Edad=" + e.getEdad());
}
Collections.sort(plantilla, new EdadComparator());
System.out.println();
System.out.println("Empleados ordendados por edad: ");
for (Empleado emp : plantilla)
{
Empleado e = emp;
System.out.println("Nombre=" + e.getNombre()
+" " + "Edad=" + e.getEdad());
}
}
}
class Empleado implements Comparable
{
private String nombre;
private int edad;
public Empleado(String n, int s)
{
nombre = n;
edad = s;
}
public String getNombre()
{
return nombre;
}
public int getEdad()
{
return edad;
}
public void setEdad(int edad){
this.edad = edad;
}
public int compareTo(Object empleado2)
{
Empleado empleado1 = (Empleado)empleado2;
if (edad < empleado1.edad) return -1;
if (edad > empleado1.edad) return 1;
return 0;
}
}
salida.
Empleados ordendados por nombre:
Nombre=Carl Edad=45
Nombre=Harry Edad=35
Nombre=Tony Edad=38
Empleados ordendados por edad:
Nombre=Harry Edad=35
Nombre=Tony Edad=38
Nombre=Carl Edad=45
Mi duda es: ¿La ordenacion por nombre se pierde al ordenar por edad?
si tuvieramos Alfonso 45 quedaría la ultima impresion:
Nombre=Harry Edad=35
Nombre=Tony Edad=38
Nombre=Alfonso Edad=45
Nombre=Carl Edad=45
o quedaria:
Nombre=Harry Edad=35
Nombre=Tony Edad=38
Nombre=Carl Edad=45
Nombre=Alfonso Edad=45