Hola!! quisiera saber como resolvieron el ejercicio de ordenar las edades? Ejercicio CU00913C del curso avanzado de programación Java.
Yo lo hice así:
CLASE MAIN
////////////////////////////////////
package practica1;
import java.util.ArrayList;
import java.util.List;
public class Main3
{
public static void main(String[]args)
{
Test2 p1=new Test2("Mario", 187, 22);
Test2 p2=new Test2("Pepe", 173, 52);
Test2 p3=new Test2("Manuel",158,27);
Test2 p4=new Test2("David", 164, 25);
Test2 p5=new Test2("Alberto", 184, 80);
List <Test2> l=new ArrayList<>();
l.add(p1);
l.add(p2);
l.add(p3);
l.add(p4);
l.add(p5);
System.out.println("Orden inicial");
for (int i = 0; i < l.size(); i++)
{
System.out.println(i+1+" - "+l.get(i).getNombre()+", "+l.get(i).getAltura()+", "+l.get(i).getEdad());
}
System.out.println("Ordenados por altura");
for (int i = 0; i < l.size(); i++)
{
int contador=1;
for (int j = 0; j < l.size(); j++)
{
if(l.get(i).compareTo(l.get(j))==-1)
{
contador++;
}
}
System.out.println(contador+" - "+l.get(i).getNombre()+", "+l.get(i).getAltura()+", "+l.get(i).getEdad());
}
System.out.println("Ordenado por edad");
for (int i = 0; i < l.size(); i++)
{
int contador=1;
for (int j = 0; j < l.size(); j++)
{
if (l.get(i).compareToEdad(l.get(j))==-1)
{
contador++;
}
}
System.out.println(contador+" - "+l.get(i).getNombre()+", "+l.get(i).getAltura()+", "+l.get(i).getEdad());
}
}
}
///////////////////////
CLASE QUE LLEVA LOS ATRIBUTOS
//////////////////////
package practica1;
public class Test2 implements Comparable<Test2>
{
private String nombre;
private int altura;
private int edad;
public Test2(String n, int a, int e)
{
this.nombre=n;
this.altura=a;
this.edad=e;
}
public int compareTo(Test2 t)
{
int resultado=0;
if(this.altura>t.altura){resultado=1;}
else if(this.altura<t.altura){resultado=-1;}
else {resultado=0;}
return resultado;
}
public int compareToEdad(Test2 t)
{
int resultado=0;
if(this.edad>t.edad){resultado=1;}
else if(this.edad<t.edad){resultado=-1;}
else{resultado=0;}
return resultado;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getAltura() {
return altura;
}
public void setAltura(int altura) {
this.altura = altura;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
}
//////////////////////
RESULTADO
/////////////////////
Orden inicial
1 - Mario, 187, 22
2 - Pepe, 173, 52
3 - Manuel, 158, 27
4 - David, 164, 25
5 - Alberto, 184, 80
Ordenados por altura
1 - Mario, 187, 22
3 - Pepe, 173, 52
5 - Manuel, 158, 27
4 - David, 164, 25
2 - Alberto, 184, 80
Ordenado por edad
5 - Mario, 187, 22
2 - Pepe, 173, 52
3 - Manuel, 158, 27
4 - David, 164, 25
1 - Alberto, 184, 80
Pero no se si era de esa forma que habia que hacerlo! y como se podria hacer para q me aparecieran ordenados por posiciones(de mayor a menor) y no solo x el indice