Autor Tema: Java ordenar una lista por diferentes criterios Interfaz Comparator CU00918C  (Leído 3145 veces)

Pepote21

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 92
    • Ver Perfil
Hola a todos. Aquí os envio mi código de 4 clases para el ejercicio CU00918C del curso avanzado de Java.

GRACIAS. Un saludo.

Código: [Seleccionar]
public class Estudiante implements Comparable<Estudiante>{
    private String nombre;
    private int edad;
    private int curso;
   
    public Estudiante(){
        nombre="";
        edad=0;
        curso=0;
    }
   
    public Estudiante(String nombre,int edad,int curso){
        this.nombre=nombre;
        this.edad=edad;
        this.curso=curso;
    }

    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 getCurso() {
        return curso;
    }

    public void setCurso(int curso) {
        this.curso = curso;
    }
   
    @Override
    public String toString(){
        return "\nNombre: "+nombre+", "+edad+" años, curso "+curso+". ";
    }
   
   
    @Override
    public int compareTo(Estudiante o) {
        return this.nombre.compareTo(o.nombre);
    }

}

Código: [Seleccionar]
import java.util.Comparator;

public class OrdenarPorCurso implements Comparator<Estudiante>{

    @Override
    public int compare(Estudiante o1, Estudiante o2) {
        return o1.getCurso()-o2.getCurso();
    }
   
}

Código: [Seleccionar]
import java.util.Comparator;

public class OrdenarPorEdad implements Comparator<Estudiante>{

    @Override
    public int compare(Estudiante o1, Estudiante o2) {
       return o1.getEdad()-o2.getEdad();
    }
   
}

Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Collections;

public class Principal {
    public static void main(String[] args){
        ArrayList<Estudiante> listaEstudiantes=new ArrayList<Estudiante>();
        listaEstudiantes.add(new Estudiante("Joaquín",18,4));
        listaEstudiantes.add(new Estudiante("Juan",15,1));
        listaEstudiantes.add(new Estudiante("Vicente",18,5));
        listaEstudiantes.add(new Estudiante("Laura",19,5));
        listaEstudiantes.add(new Estudiante("María",17,3));
       
        Estudiante a=new Estudiante();
       
        System.out.println("Lista de estudiantes sin ordenar: "+listaEstudiantes.toString());
       
        Collections.sort(listaEstudiantes);
        System.out.print("Lista estudiantes ordenados por orden alfabético: ");
        for(Estudiante tmp:listaEstudiantes){
            System.out.print(tmp.getNombre()+", ");
        }
     
       
        Collections.sort(listaEstudiantes, new OrdenarPorEdad());
        System.out.print("\nLista estudiantes ordenados por edad: ");
        for(Estudiante tmp:listaEstudiantes){
            System.out.print(tmp.getNombre()+"("+tmp.getEdad()+")"+", ");
        }
       
       
        Collections.sort(listaEstudiantes, new OrdenarPorCurso());
        System.out.print("\nLista estudiantes ordenados por curso: ");
        for(Estudiante tmp:listaEstudiantes){
            System.out.print(tmp.getNombre()+(" ")+"("+tmp.getCurso()+")"+", ");
        }
     
    }
}
« Última modificación: 15 de Abril 2017, 19:23 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, ejercicio bien resuelto. Lo único que mejoraría es el nombre de las clases. En lugar de OrdenarPorCurso podría ser ComparadorOrdenPorCurso o algo similar

Salu2

 

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".