Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Luis Fdo Carvajal en 23 de Mayo 2017, 19:40
-
Buenos días, ejercicio CU00918C del tutorial de programación Java avanzado.
Para su revisión, Gracias
package estudiante;
import java.util.ArrayList;
import java.util.Collections;
/**
*
* @author itco1724
*/
public class TestEstudiante {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ArrayList<Estudiante> listaEstudiante = new ArrayList<>();
listaEstudiante.add(new Estudiante("Carlos",19,3));
listaEstudiante.add(new Estudiante("Felipe",21,1));
listaEstudiante.add(new Estudiante("Ana",18,4));
listaEstudiante.add(new Estudiante("Rosa",15,1));
listaEstudiante.add(new Estudiante("Jose",10,2));
/*ista de Estudiantes ha sido ordenada usando la invocación Collections.sort pasando como parámetro la colección y el orden
*utilizado en esta invocación es el orden natural definido en su clase*/
Collections.sort(listaEstudiante);
System.out.println("Estudiantes Ordenados por nombre: "+ listaEstudiante);// Ejemplo uso ordenación natural
Collections.sort(listaEstudiante, new OrdenarEstudiantePorEdad());
System.out.println("Estudiantes Ordenados por edad: "+listaEstudiante);
Collections.sort(listaEstudiante, new OrdenarEstudiantePorCurso());
System.out.println("Estudiantes Ordenados por curso: "+listaEstudiante);
}
}
package estudiante;
/**
*
* @author itco1724
*/
public class Estudiante implements Comparable<Estudiante>{
//campos nombre, edad y curso.
private String nombre;
private int edad;
private int curso;
public Estudiante(String nombre, int edad, int curso) { this. nombre = nombre; this. edad = edad;this.curso = curso;}
@Override
public Estudiante clone() {
Estudiante clon = new Estudiante(this.nombre, this.edad, this.curso);
return clon;}
@Override
public String toString() {
return " Nombre: "+ nombre+" Edad: "+edad+" Curso: " + curso + "\n";}
//Cuando se trate de realizar una ordenación “natural”, esta se hará por orden alfabético de nombres.
@Override
public int compareTo(Estudiante o) {
return this.nombre.compareTo(o.nombre);}
public String getNombre() { return nombre; }
public int getEdad() { return edad;}
public int getCurso() { return curso;}
} //Cierre de la clase
package estudiante;
import java.util.Comparator;
/**
* orden total
* @author itco1724
*/
public class OrdenarEstudiantePorEdad implements Comparator<Estudiante> {
@Override
public int compare(Estudiante o1, Estudiante o2) {
return o2.getEdad() - o1.getEdad(); // Devuelve un entero positivo si la edad de o1 es mayor que la de o2
}
}
package estudiante;
import java.util.Comparator;
/**
*
* @author itco1724
*/
public class OrdenarEstudiantePorCurso implements Comparator<Estudiante> {
@Override
public int compare(Estudiante o1, Estudiante o2) {
return o1.getCurso() - o2.getCurso(); // Devuelve un entero positivo si la altura de o1 es mayor que la de o2
}
}
-
Hola Luis Fdo Carvajal
Por favor, si creas temas en el foro, ponle un título adecuado siguiendo las indicaciones que se dan en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0
Debes prestar atención a nombrar correctamente las clases. Por ejemplo el nombre OrdenarEstudiantePorCurso no es un nombre adecuado, porque no suena bien decir "he creado un objeto OrdenarEstudiantePorCurso". Sonaría mejor "he creado un objeto ComparadorDeEstudiantesPorCurso" o algo similar.
El código del ejercicio lo veo correcto y cumple con lo que se pedía
Saludos