Ordenar un ArrayList

Necesito ordenar un ArrayList que está declarado de la siguiente manera

ArrayList<empleado> empleado = new ArrayList<empleado>();

Empleado es una clase abstracta, y como es superclase existen otras clases que heredan de esta los atributos nombre y cédula

El array list lo tengo de esta forma:

empleado.add(new EmpleadoAsalariado());

empleado.add(new EmpleadoPorHoras());

Dependiendo de lo que necesite y EmpleadoAsalariado() y EmpleadoPorHoras() son dos clases que heredan de la superclase Empleado

Lo que quiero es ordenar a los empleados por el nombre, no puedo declarar a los empleados en un vector puesto que debe generar cualquier número de empleados tanto de la clase EmpleadoAsalariado()) como de EmpleadoPorHoras()

Traté con Collection. Sort(empleado); pero me da error.

Si me pueden ayudar les agradezco de antemano.

</empleado></empleado>

1 Respuesta

Respuesta
1

Como ya has dicho tienes que utilizar el método Collection. Sort(empleado).

Lo que, para utilizar este método, tu clase abstracta Empreado, tiene que implementar la interfície comparable, y implementar el método compareTo.

En tu caso, seria algo así:

public abstract class Empleado implements Comparable<Empleado> {
    private String nombre;
    public String getNombre() {
        return nombre;
    }
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
    public int compareTo(Empleado otroEmpleado) { 
        return nombre.compareTo(otroEmpleado.getNombre());
    }
}

Y la lista usar el método sort(Empleado2 es una clase que he hecho que hereda de Empleado):

ArrayList<Empleado> empleados = new ArrayList<Empleado>();
 Empleado e1 = new Empleado2();
 e1.setNombre("Juan");
 Empleado e2 = new Empleado2();
 e2.setNombre("Alicia");
 Empleado e3 = new Empleado2();
 e3.setNombre("Pedro");
 Empleado e4 = new Empleado2();
 e4.setNombre("Bernardo");
 Collections.sort(empleados);

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas