Autor Tema: Java Avanzado Ejercicio CU00918 Comparator (API java). Diferencias con Comparabl  (Leído 124 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola dejo el ejercicio    (CU00918C) Interface Comparator (API java). Diferencias con Comparable. Clase Collections. Código ejemplo.

Codigo de la clase TestEjecicio metodo main()
Código: [Seleccionar]
import java.util.ArrayList;
import java.util.Collections;
public class TestEjecicio {
    public static void main(String arg[]) {
        ArrayList<Estudiante> listaEstudiante = new ArrayList<Estudiante>();
        listaEstudiante.add(new Estudiante("Carlos",19,3));
        listaEstudiante.add(new Estudiante("Felipe",18,4));
        listaEstudiante.add(new Estudiante("Ana",18,4));
        listaEstudiante.add(new Estudiante("Rosa",15,1));
        listaEstudiante.add(new Estudiante("Jose",10,2));

        System.out.print("---------------------------------------\n");
        System.out.println("Lista de estudiantes sin ordenar\n---------------------------------------");
        PresentarListas(listaEstudiante);//Se presenta la lista sin ordenar
        System.out.print("---------------------------------------\n");
        System.out.println("Personas Ordenadas por orden natural\n---------------------------------------");
        Collections.sort(listaEstudiante);  // Ordenar por orden natural (alfabetico) por nombre
        PresentarListas(listaEstudiante);   // Presentar la lista 
        System.out.print("---------------------------------------\n ");
        System.out.println("Personas Ordenadas por Edad\n---------------------------------------");
        Collections.sort(listaEstudiante, new CompararEstudiantePorEdad());// Ordenar por edad
        PresentarListas(listaEstudiante);//Presentar la lista
        System.out.print("---------------------------------------\n ");
        System.out.println("Personas Ordenadas por Curso\n---------------------------------------");
        Collections.sort(listaEstudiante, new CompararEstudiantePorCurso());// Ordenar por curso
        PresentarListas(listaEstudiante);//Presentar la lista 
        System.out.println("\n---------------------------------------");
    }
    //Metodo para presentar las listas de estudiantes ordenadas
    public static void PresentarListas(ArrayList<Estudiante> listaEstudiante){
        System.out.print("Presentar la lista listaEstudiante\n");
        System.out.print(listaEstudiante.toString()+"\n");
        System.out.print("Presentar la Clase Estudiante con los metodos get\n");
        System.out.println("\tNombre\tEdad\tCurso\t");
        for(Estudiante tmp:listaEstudiante){
            System.out.print("\t"+tmp.getNombre()+"\t"+tmp.getEdad()+"\t"+tmp.getCurso()+"\n");
        }

       
    }
}

Clase Estudiantes
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;
    }

    @Override
    public String toString() {
        return "Estudiante =>: "+nombre+" Edad: "+edad+" Curso: "+curso+"\n";}

    @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;}

    public void setNombre() {this.nombre=nombre;}

    public void setEdad() {this.edad=edad;}

    public void setCurso() {this.curso=curso;}
}


Clases CompararEstudiantePorCurso y CompararEstudiantePorEdad
Código: [Seleccionar]
import java.util.Comparator;

public class CompararEstudiantePorCurso 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
    }
}
Código: [Seleccionar]
import java.util.Comparator;

public class CompararEstudiantePorEdad implements Comparator<Estudiante> {
    @Override
    public int compare(Estudiante o1, Estudiante o2) {
    return o1.getEdad() - o2.getEdad(); // Devuelve un entero positivo si la altura de o1 es mayor que la de o2
    }
}
Adios  ;)

 

Esto es un laboratorio de ideas...
Aprender a programar

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