|
| 1 | +import java.time.LocalDate; |
| 2 | +import java.util.Arrays; |
| 3 | +import java.util.List; |
| 4 | +import java.util.function.Consumer; |
| 5 | +import java.util.function.Function; |
| 6 | +import java.util.function.Predicate; |
| 7 | +import java.util.function.Supplier; |
| 8 | +import java.util.stream.Collectors; |
| 9 | + |
| 10 | +public class simonguzman { |
| 11 | + public static void main(String[] args) { |
| 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); |
| 24 | + } |
| 25 | + |
| 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 | + |
| 92 | + public static void ejercicioPrincipal(){ |
| 93 | + List<Integer> numeros = Arrays.asList(1,2,3,4,5,6,7,8,9,10); |
| 94 | + List<Integer> numerosMultiplicados = multiplicarXDos(numeros); |
| 95 | + List<Integer> numerosPares = filtrarNumerosPares(numerosMultiplicados); |
| 96 | + imprimirNumeros(numerosPares); |
| 97 | + int suma = sumarNumeros(numerosPares); |
| 98 | + System.out.println("Suma de los números pares multiplicados por 2: " + suma); |
| 99 | + } |
| 100 | + |
| 101 | + public static List<Integer> multiplicarXDos(List<Integer> numeros){ |
| 102 | + Function<Integer, Integer> multiplicar = (n) -> n * 2; |
| 103 | + return numeros.stream().map(multiplicar).collect(Collectors.toList()); |
| 104 | + } |
| 105 | + |
| 106 | + public static List<Integer> filtrarNumerosPares(List<Integer> numeros){ |
| 107 | + Predicate<Integer> esPar = (n) -> n % 2 == 0; |
| 108 | + return numeros.stream().filter(esPar).collect(Collectors.toList()); |
| 109 | + } |
| 110 | + |
| 111 | + public static int sumarNumeros(List<Integer> numeros){ |
| 112 | + Supplier<Integer> sumar = () -> numeros.stream().mapToInt(Integer::intValue).sum(); |
| 113 | + return sumar.get(); |
| 114 | + } |
| 115 | + |
| 116 | + public static void imprimirNumeros(List<Integer> numeros){ |
| 117 | + Consumer<Integer> imprimir = (n) -> System.out.println("Numero: "+n); |
| 118 | + numeros.forEach(imprimir); |
| 119 | + } |
| 120 | +} |
0 commit comments