Foros del Web » Programación para mayores de 30 ;) » Java »

Comparable y Comparator

Estas en el tema de Comparable y Comparator en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/08/2009, 16:36
Avatar de xlugo2002  
Fecha de Ingreso: noviembre-2002
Ubicación: Puebla, México
Mensajes: 474
Antigüedad: 21 años, 5 meses
Puntos: 0
Comparable y Comparator

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

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:51.