Skip to content

Commit 1e21684

Browse files
committed
Ejercicio #22 completado
1 parent cccba5b commit 1e21684

File tree

1 file changed

+79
-2
lines changed

1 file changed

+79
-2
lines changed

Roadmap/22 - FUNCIONES DE ORDEN SUPERIOR/java/simonguzman.java

Lines changed: 79 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
1+
import java.time.LocalDate;
22
import java.util.Arrays;
33
import java.util.List;
44
import java.util.function.Consumer;
@@ -9,9 +9,86 @@
99

1010
public class simonguzman {
1111
public static void main(String[] args) {
12-
ejercicioPrincipal();
12+
//ejercicioPrincipal();
13+
ejercicioAdicional();
14+
}
15+
16+
/******************** Ejercicio adicional ********************/
17+
public static void ejercicioAdicional(){
18+
List<Estudiante> estudiantes = Arrays.asList(
19+
new Estudiante("Juan", LocalDate.of(2000, 5, 15), Arrays.asList(8.0, 9.0, 10.0)),
20+
new Estudiante("Ana", LocalDate.of(1998, 11, 3), Arrays.asList(9.5, 9.0, 9.7)),
21+
new Estudiante("Carlos", LocalDate.of(2002, 6, 21), Arrays.asList(6.0, 7.5, 8.0))
22+
);
23+
operaciones(estudiantes);
1324
}
1425

26+
public static void operaciones(List<Estudiante> estudiantes){
27+
promedioCalificaciones(estudiantes);
28+
29+
List<String> mejores = mejoresEstudiantes(estudiantes);
30+
System.out.println("Mejores estudiantes: "+mejores);
31+
32+
List<Estudiante> ordenados = ordenarPorNacimiento(estudiantes);
33+
System.out.println("Estudiantes ordenados por nacimiento:");
34+
ordenados.forEach(est -> System.out.println(est.getNombre()));
35+
36+
double mayorCalificacion = obtenerMayorCalificacion(estudiantes);
37+
System.out.println("Mayor calificación: " + mayorCalificacion);
38+
}
39+
40+
public static void promedioCalificaciones(List<Estudiante> estudiantes){
41+
estudiantes.forEach(estudiante -> {
42+
double promedio = estudiante.getPromedio();
43+
System.out.println("Estudiante: "+estudiante.getNombre()+ " ,promedio: "+promedio);
44+
});
45+
}
46+
47+
public static List<String> mejoresEstudiantes(List<Estudiante> estudiantes){
48+
return estudiantes.stream().filter(est -> est.getPromedio() >= 9).map(Estudiante::getNombre).toList();
49+
}
50+
51+
public static List<Estudiante> ordenarPorNacimiento(List<Estudiante> estudiantes){
52+
return estudiantes.stream().sorted((e1, e2) -> e2.getFechaNacimiento().compareTo(e1.getFechaNacimiento())).toList();
53+
}
54+
55+
public static double obtenerMayorCalificacion(List<Estudiante> estudiantes){
56+
return estudiantes.stream().flatMap(est -> est.getCalificaciones().stream()).max(Double::compareTo).orElse(0.0);
57+
}
58+
public static class Estudiante {
59+
private String nombre;
60+
private LocalDate fechaNacimiento;
61+
private List<Double> calificaciones;
62+
63+
public Estudiante(){
64+
65+
}
66+
67+
public Estudiante(String nombre, LocalDate fechaNacimiento, List<Double> calificaciones){
68+
this.nombre = nombre;
69+
this.fechaNacimiento = fechaNacimiento;
70+
this.calificaciones = calificaciones;
71+
}
72+
73+
public String getNombre() {
74+
return nombre;
75+
}
76+
77+
public LocalDate getFechaNacimiento() {
78+
return fechaNacimiento;
79+
}
80+
81+
public List<Double> getCalificaciones() {
82+
return calificaciones;
83+
}
84+
85+
public double getPromedio(){
86+
return calificaciones.stream().mapToDouble(Double::doubleValue).average().orElse(0.0);
87+
}
88+
}
89+
90+
/******************** Ejercicio conceptual ********************/
91+
1592
public static void ejercicioPrincipal(){
1693
List<Integer> numeros = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
1794
List<Integer> numerosMultiplicados = multiplicarXDos(numeros);

0 commit comments

Comments
 (0)