Concluyendo otro curso, ¡alcanzaré el top 3 de Alura!
Guilherme Silveira - 23.143.
Maurício Aniche - 19.930.
Rodrigo Turini - 13.500.
Alex Felipe - 13.450.
Para calcular la información de los puntos, utilizamos la clase Alumno:
public class Alumno {
private final String nombre;
private int puntos;
public Alumno(String nombre, int puntos) {
this.nombre = nombre;
this.puntos = puntos;
}
//métodos
}
Entonces vamos a crear a nuestros alumnos:
Alumno alumno1 = new Alumno("Alex Felipe", 13450);
Alumno alumno2 = new Alumno("Maurício Aniche", 19930);
Alumno alumno3 = new Alumno("Guilherme Silveira", 23143);
Alumno alumno4 = new Alumno("Rodrigo Turini", 13500);
Ahora necesitamos una List para almacenar estos alumnos:
List<Alumno> alumnos = new ArrayList<Alumno>();
alumnos.add(alumno1);
alumnos.add(alumno2);
alumnos.add(alumno3);
alumnos.add(alumno4);
Probemos nuestra lista:
System.out.println(alumnos);
Resultado:
\[Alex Felipe - 13450, Maurício Aniche - 19930, Guilherme Silveira - 23143, Rodrigo Turini - 13500\]
¡Listo! Tengo mi List
con los alumnos. Ahora vamos a ordenarla con el método estático sort()
de la clase Collections().
Collections.sort(alumnos);
Espera un momento... ¿Mi código no compila? El problema es que el método sort() no sabe cómo ordenar un alumno, o sea, no sabe qué parámetro o criterio debe utilizar para comparar alumnos. Sin embargo, podemos informarle esto implementando la interfaz Comparable en la clase Alumno:
public class Alumno implements Comparable<Alumno> {
//atributos y métodos
@Override public int compareTo(Alumno otroAlumno) {
//implementación
}
}
Cuando implementamos la interfaz Comparable
, necesitamos llenar el campo de generics_ con el tipo de objeto que queremos comparar, en este caso, queremos comparar objetos de tipo Alumno. Por último, necesitamos implementar el método compareTo().
La regla de ordenación utilizando el método compareTo()
compara dos objetos (alumnos) y funciona de la siguiente manera:
En nuestro ejemplo:
@Override public int compareTo(Alumno otroAlumno) {
if (this.puntos > otroAlumno.getPuntos()) {
return -1;
}
if (this.puntos < otroAlumno.getPuntos()) {
return 1;
}
return 0;
}
Indicamos que si los puntos del alumno son mayores, muévalo más a la izquierda (-1), si son menores, muévalo a la derecha (1) y si los alumnos son iguales, no haga nada (0).
Después de implementar Comparable
, ¡nuestro código compila! Vamos a probarlo:
Collections.sort(alumnos);
System.out.println(alumnos);
Resultado:
[Guilherme Silveira - 23143, Maurício Aniche - 19930, Rodrigo Turini - 13500, Alex Felipe - 13450]
¡Observa que ahora nuestros alumnos están ordenados!
A diferencia de ordenar números, para ordenar listas de objetos específicos, como en el caso del objeto alumno, es necesario especificar cómo se debe ordenar el objeto implementando la interfaz Comparable
y su método compareTo()
.
¿Qué opinas de la técnica para ordenar una lista en Java? ¡Echa un vistazo a nuestra Formación Java, que se centra en presentar el mundo Java en general, genial, ¿verdad? ;)
Alex es instructor y desarrollador con experiencia en Java, Kotlin, Android. Creador de más de 40 cursos, como Kotlin, Flutter, Android, persistencia de datos, comunicación con Web API, personalización de pantalla, pruebas automatizadas, arquitectura de Apps y Firebase. Es experto en Programación Orientada a Objetos, siempre con el objetivo de compartir las mejores prácticas y tendencias en el mercado de desarrollo de software. Trabajó durante 2 años como editor de contenidos en el blog de Alura y hoy todavía escribe artículos técnicos.
Este artículo fue traducido para Alura Latam por Brenda Souza
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana
Paga en moneda local en los siguientes países
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana
Paga en moneda local en los siguientes países
Puedes realizar el pago de tus planes en moneda local en los siguientes países:
País | |||||||
---|---|---|---|---|---|---|---|
Plan Semestral |
487.37
BOB |
69289.36
CLP |
307472.10
COP |
65.90
USD |
264.35
PEN |
1435.53
MXN |
2978.57
UYU |
Plan Anual |
738.82
BOB |
105038.04
CLP |
466107.17
COP |
99.90
USD |
400.74
PEN |
2176.17
MXN |
4515.32
UYU |
Acceso a todos
los cursos
Estudia las 24 horas,
dónde y cuándo quieras
Nuevos cursos
cada semana