Apparently it works well for me, but in the information I've read, I recommend that the compareTo()
method defined by the Comparable()
interface be compatible with the equals()
method.
This means that:
objeto1.compareTo(objeto2)==0
when objeto1.equals(objeto2)==true
.
I do not know exactly what I have to do but without doing any equals
works for me.
I have this method to call it:
public void ordenarPorNombreComparableComparator() {
Collections.sort(listaEmpleados);
listarTodo();
}
Class:
package conArrayList_Vector_Comparable_comparator;
public abstract class Empleado implements Comparable<Empleado>{
static int autonumerico;
private String nombre;
private int edad;
private double sueldo;
private String codigo;
public Empleado() {
autonumerico++;
this.nombre = "Empleado"+autonumerico;
this.edad =(int)(Math.random()*50+20);
this.sueldo =1000; //Math.random()*1000+1000;
this.codigo = generadorCodigo();
//this.codigo = "z"+autonumerico;
}
public abstract String generadorCodigo();
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
public double getSueldo() {
return sueldo;
}
public void setSueldo(double sueldo) {
this.sueldo = sueldo;
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
@Override
public String toString() {
return "Empleado [nombre=" + nombre + ", edad=" + edad + ", sueldo=" + sueldo + ", codigo=" + codigo + "]";
}
@Override//ordenNatural
public int compareTo(Empleado o) {//Comparamos por codigo
return this.codigo.compareToIgnoreCase(o.codigo);
}
}