Dejo mi solución al ejercicio CU00913C del curso pdf de programación avanzada Java, espero cualquier critica u observación. Gracias.
package claseCU00913C;
public class Persona1 implements Comparable<Persona1> {
private String nombre;
private int edad;
private int altura;
public Persona1() {
};
public Persona1(String pNombre, int pAltura, int pEdad) {
this.setNombre(pNombre);
this.edad = pEdad;
this.altura = pAltura;
}
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 int getAltura() {
return altura;
}
public void setAltura(int altura) {
this.altura = altura;
}
@Override
public int compareTo(Persona1 o) {
return this.edad > o.edad ? 1 : 0;
}
public int compareToAltura(Persona1 o) {
return this.altura < o.altura ? 1 : 0;
}
public String toString() {
return this.nombre + " - Altura: " + altura + " - Edad: " + edad;
}
}
package claseCU00913C;
public class OrdenaLista {
public OrdenaLista() {
}
public void OrdenaAltura(Persona1[] pPersonas) {
for (int i = 0; i < pPersonas.length - 1; i++) {
Persona1 aux = new Persona1();
for (int j = 0; j < pPersonas.length - 1; j++) {
if (pPersonas[j].compareToAltura(pPersonas[j + 1]) == 1) {
aux = pPersonas[j];
pPersonas[j] = pPersonas[j + 1];
pPersonas[j + 1] = aux;
}
}
}
}
public void OrdenaEdad(Persona1[] pPersonas) {
for (int i = 0; i < pPersonas.length - 1; i++) {
Persona1 aux = new Persona1();
for (int j = 0; j < pPersonas.length - 1; j++) {
if (pPersonas[j].compareTo(pPersonas[j + 1]) == 1) {
aux = pPersonas[j];
pPersonas[j] = pPersonas[j + 1];
pPersonas[j + 1] = aux;
}
}
}
}
public void imprime(Persona1[] personas) {
int cont = 0;
for (Persona1 persona : personas) {
cont += 1;
System.out.println(cont + ". " + persona.toString());
}
System.out.println("\n");
}
}
package claseCU00913C;
public class Programa1 {
public static void main(String[] args) {
Persona1 personas[] = new Persona1[5];
OrdenaLista listaOrdenada;
personas[0] = new Persona1("Mario", 187, 22);
personas[1] = new Persona1("Pepe", 173, 52);
personas[2] = new Persona1("Manuel", 158, 27);
personas[3] = new Persona1("David", 164, 25);
personas[4] = new Persona1("Alberto", 184, 80);
listaOrdenada = new OrdenaLista();
System.out.println("Personas sin ordenar \n");
listaOrdenada.imprime(personas);
listaOrdenada.OrdenaAltura(personas);
System.out.println("Personas ordenadas por altura \n");
listaOrdenada.imprime(personas);
listaOrdenada.OrdenaEdad(personas);
System.out.println("Personas ordenadas por edad \n");
listaOrdenada.imprime(personas);
}
}