Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Pepote21 en 15 de Febrero 2017, 21:06

Título: Java ordenar una lista por diferentes criterios Interfaz Comparator CU00918C
Publicado por: Pepote21 en 15 de Febrero 2017, 21:06
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()+")"+", ");
        }
     
    }
}
Título: Re:Java ordenar una lista por diferentes criterios Interfaz Comparator CU00918C
Publicado por: Ogramar en 11 de Junio 2017, 17:31
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