Buenas a todos, tengo una consulta para hacer, resulta que tengo una clase Cargo que tiene como atributos id y nombre, luego tengo otra clase llamada Persona que tiene como atributos id, nombre y el cargo que tiene.
Resulta que quiero ordenar las personas por cargos y cuando hago dicha ordenación me borra la anterior persona con el cargo repetido.
Pongo el código:
Código Java:
Ver originalpackage app.contr.clases;
public class Cargo implements Comparable<Cargo>
{
private int id;
public static int autoID = 0;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
return nom;
}
public void setNom
(String nom
) { this.nom = nom;
}
public Cargo
(int xid,
String xnom
) { this.id = xid;
this.nom = xnom.toUpperCase();
}
@Override
public boolean equals
(Object obj
) { if(obj instanceof Cargo){
Cargo objc = (Cargo)obj;
return objc.nom.equals(this.nom);
}
else
return false;
}
@Override
public int hashCode() {
int hash = 17;
hash = 31 * hash + this.nom.hashCode();
return hash;
}
@Override
return nom;
}
@Override
public int compareTo(Cargo o) {
if (this.nom.compareTo(o.getNom()) > 0)
return 1;
else if (this.nom.compareTo(o.getNom()) < 0)
return -1;
else
return 0;
}
public static int obtenerMAXID(){
return autoID + 1;
}
public static void incrementarID(){
autoID++;
}
}
Código Java:
Ver originalpackage app.contr.clases;
public class Persona
{
private final int id;
private Cargo cargo;
public static int autoID = 0;
public int getId() {
return id;
}
return nom;
}
public void setNom
(String nom
) { this.nom = nom;
}
public Cargo getCargo() {
return cargo;
}
public void setCargo(Cargo cargo) {
this.cargo = cargo;
}
public Persona
(int xid,
String xnom, Cargo xcargo
) { this.id = xid;
this.nom = xnom.toUpperCase();
this.cargo = xcargo;
}
@Override
public boolean equals
(Object obj
) { if(obj instanceof Persona){
Persona objp = (Persona)obj;
return objp.nom.equals(this.nom);
}
else
return false;
}
@Override
public int hashCode() {
int hash = 17;
hash = 31 * hash + this.nom.hashCode();
return hash;
}
@Override
return nom;
}
public static int obtenerMAXID(){
return autoID+1;
}
public static void incrementarID(){
autoID++;
}
}
Ordena personas por cargo de forma creciente:
Código Java:
Ver originalpackage app.vista.util;
import app.contr.clases.Persona;
import app.vista.facade.FacadeContr;
import java.util.Comparator;
public class OrdenarPerXCA implements Comparator<Integer>
{
@Override
Persona p1 = FacadeContr.getInstance().ContrPersonas().findAll().get(o1);
Persona p2 = FacadeContr.getInstance().ContrPersonas().findAll().get(o2);
return p1.getCargo().getNom().compareTo(p2.getCargo().getNom());
}
}
Ordena personas por cargo de forma decreciente:
Código Java:
Ver originalpackage app.vista.util;
import app.contr.clases.Persona;
import app.vista.facade.FacadeContr;
import java.util.Comparator;
public class OrdenarPerXCD implements Comparator<Integer>
{
@Override
Persona p1 = FacadeContr.getInstance().ContrPersonas().findAll().get(o1);
Persona p2 = FacadeContr.getInstance().ContrPersonas().findAll().get(o2);
return p2.getCargo().getNom().compareTo(p1.getCargo().getNom());
}
}
Necesito solucionar esta falla y no sé cómo, espero sus respuestas y saludos.