Buenas a todos los del foro, acá mi planteamiento ante el ejercicio CU00918C del curso de Java avanzado. Si alguien me puede corregir lo agradezco.
Crea una una clase llamada Estudiante con 3 campos (atributos). Estos serán nombre, edad y curso (donde el nombre será un String, la edad un int y el curso un int con valores entre 1 y 5 que representan desde primer curso hasta quinto curso).
En una clase con el main crea un ArrayList de 5 estudiantes. Usando Comparator establece dos órdenes totales: uno basado en la edad y otro en el curso. Además, establece como orden natural la ordenación por nombres según orden alfabético. Muestra por consola primero la lista desordenada y luego el resultado de ordenar la lista en base a los tres órdenes citados.
Ejemplo de ejecución que se espera del programa:
Lista de estudiantes sin ordenar:
nombre: Carlos, edad: 19, curso 3,
, nombre: Felipe, edad: 21, curso 1,
, nombre: Ana, edad: 18, curso 4,
, nombre: Rosa, edad: 15, curso 1,
, nombre: Jose, edad: 10, curso 2
Lista de estudiantes ordenados por orden alfabético: Ana, Carlos, Felipe, Jose, Rosa
Lista de estudiantes ordenados por edad : Felipe (21), Carlos (19), Ana (18), Rosa (15), Jose: 10
Lista de estudiantes ordenados por curso: Felipe (1), Rosa (1), Jose (2), Carlos (3), Ana (4)
clase Estudiante
public class Estudiante implements Comparable<Estudiante> {
private String nombre;
private int edad;
private int curso;
public Estudiante(){}
public Estudiante(String nombre, int edad, int curso){
this.nombre = nombre;
this.edad = edad;
this.curso = curso;
}
public void setNombre(String nombreX){
this.nombre = nombreX;
}
public void setEdad(int edadX){
this.edad = edadX;
}
public void setCurso(int cursoX){
this.curso = cursoX;
}
public String getNombre(){
return nombre;
}
public int getEdad(){
return edad;
}
public int getCurso(){
return curso;
}
public int compareTo(Estudiante x){
return this.nombre.compareTo(x.nombre);
}
public String toString(){
return "Nombre: "+nombre+", Edad: "+edad+", curso "+curso;
}
}
clase OrdenarPorCurso
import java.util.Comparator;/**
*
* @author baseuser
*/
public class OrdenarPorCurso implements Comparator<Estudiante>{
public int compare(Estudiante x, Estudiante y){
return x.getCurso()-y.getCurso();// Devuelve un entero positivo si el curso de x es mayor que el curso de y
}
}
clase OrdenarPorEdad:
import java.util.Comparator;/**
*
* @author baseuser
*/
public class OrdenarPorEdad implements Comparator<Estudiante>{
public int compare(Estudiante x, Estudiante y){
return y.getEdad()-x.getEdad();
// Devuelve un entero positivo si edad "y" es mayor que la de x
}
}
y el main
import java.util.ArrayList;
import java.util.Collections;/**
*
* @author baseuser
*/
public class Test {
public static void main(String []args){
ArrayList<Estudiante> lista = new ArrayList<Estudiante>();
lista.add(new Estudiante("Carlos", 19, 3));
lista.add(new Estudiante("Felipe", 21, 1));
lista.add(new Estudiante("Ana", 18, 4));
lista.add(new Estudiante("Rosa", 15, 1));
lista.add(new Estudiante("Jose", 10, 2));
System.out.println("Lista de estudiantes sin ordenar:");
for(Estudiante tmp: lista){
System.out.println(tmp.toString());
}
Collections.sort(lista);
System.out.println("Lista de estudiantes ordenados por orden alfabético: "+lista);
Collections.sort(lista, new OrdenarPorEdad());
System.out.println("Lista de estudiantes ordenados por edad: "+lista);
Collections.sort(lista, new OrdenarPorCurso());
System.out.println("Lista de estudiantes ordenados por curso: "+lista);
}
}
Ahora bien tengo una duda con respecto a la parte final del ejercicio en donde hay que imprimir los estudiantes ordenados, mi duda es que si es obligatorio que se imprima tal y como dice el ejemplo de ejecucion osea asi:
Lista de estudiantes ordenados por orden alfabético: Ana, Carlos, Felipe, Jose, Rosa
Lista de estudiantes ordenados por edad : Felipe (21), Carlos (19), Ana (18), Rosa (15), Jose: 10
Lista de estudiantes ordenados por curso: Felipe (1), Rosa (1), Jose (2), Carlos (3), Ana (4)...
de ser asi, necesito orientación para poder separar los datos a la hora de imprimir
