Hola estimado lector, en esta ocasión voy a mostrar cómo podemos ordenar un array de objetos en Java, a través de un determinado atributo. Todo esto se hace com la implementación de Comparable<clase>, dentro de la clase de Java, la cual vamos a crear los objetos.
Lo primero que debemos de tener claro es que debemos tener implementados los métodos y funciones getters y setters, sino no va a funcionar. Una vez tengamos implementados lo anterior nos deberá quedar un código de programación muy parecido al siguiente:
public class Persona implements Comparable<Persona> {
String nombre;
String apellido;
int anyos;
Persona(String nombre, String apellido, int dni) {
this.nombre = nombre;
this.apellido = apellido;
this.anyos = dni;
}
@Override
public int compareTo(Persona arg0) {
int dni = this.getAnyos();
if (dni == arg0.anyos) {
return 0;//lo pone al mismo nivel
} else if (dni > arg0.anyos) {
return 1;//lo pone delante
} else {
return -1;//lo pone hacia atrás
}
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public int getAnyos() {
return anyos;
}
public void setAnyos(int anyos) {
this.anyos = anyos;
}
}
Una vez hecho este código, vamos a crear varios objetos y creamos varias personas, a la vez que lo ordenamos con Arrays.sort(arrayAOrdenar).El código deberá verse de la siguiente forma:
Persona[] personas = new Persona[3];
personas[0] = new Persona("nombre", "apellidos",
34);
personas[1] = new Persona("nombre1", "apellidos1", 15);
personas[2] = new Persona("nombre2", "apellidos2", 27);
Arrays.sort(personas);
for(int i=0;i<personas.length;i++){
System.out.println(personas[i].getAnyos()+"");
}
Pues nada hasta aquí mi código de hoy espero que os haya gustado, que hayan aprendido algo, sin más me despido. Un saludo y hasta la próxima, chao.
Gracias por visitar mi blog de informática, mi nombre es Tomás y soy formador y desarrollador web. Si quiere usted dejarme alguna sugerencia, ayuda o quiere un servicio de formación estoy escuchando ofertas en tomas.gonzalez@infogonzalez.com, en Facebook a https://www.facebook.com/Infogonzalez estoy deseando escucharle. Su duda o sugerencia NO molesta.