Autor Tema: Establecer distintas formas de ordenar elementos u objetos clase Java CU00918C  (Leído 2508 veces)

Luis Fdo Carvajal

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Buenos días, ejercicio CU00918C del tutorial de programación Java avanzado.
Para su revisión, Gracias

Código: [Seleccionar]
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);
      }
}

Código: [Seleccionar]
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

Código: [Seleccionar]
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
     }
    }

Código: [Seleccionar]
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
     }
    }


« Última modificación: 19 de Junio 2017, 21:08 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".