Skip to content

Ejercicios

Ejercicio 1

Realiza una nueva versión del proyecto del tema anterior eliminando la clase Stream<T> y haciendo uso de los streams

Ejercicio 2

En un Udemy se desea guardar información referente a los cursos que se tienen almacenado:

  • El título del curso
  • La duración expresada en horas. Si un curso dura una hora y 15 minutos se representará como 1,25.
  • Cantidad de videos que contiene el curso
  • Cantidad de alumnos subscritos al curso

Teniendo en cuenta la siguiente información de los cursos:

Título Duración Vides Alumnos
Curso profesional de Java 6,5 50 200
Curso profesional de Python 8,5 60 800
Curso profesional de DB 4,5 700 700
Curso profesional de Android 7,5 10 400
Curso profesional de Escritura 1,5 10 300
  • Obtener la cantidad de cursos con una duración mayor a 5 horas.
  • Obtener la cantidad de cursos con una duración menor a 2 horas.
  • Listar título de todos aquellos cursos con una cantidad de vídeos mayor a 50.
  • Mostrar en consola el título de los 3 primeros cursos con mayor duración.
  • Mostrar en consola la duración total de todos los cursos.
  • Mostrar en consola todos aquellos libros que superen el promedio en cuanto a duración se refiere.
  • Mostrar en consola la duración de todos aquellos cursos que tengan una cantidad de alumnos inscritos menor a 500.
  • Obtener el curso con mayor duración.
  • Crear una lista con todos los títulos de los cursos.
Ejercicio 3

Crea una aplicación Java que defina las siguientes clases:

  • Student: Representa a un alumno. Dispone de los campos:
    • id: identificador de tipo long
    • name: nombre del alumno de tipo String
    • age: edad del alumno de tipo int
    • group: grupo del alumno de tipo String
    • grant: cantidad de la beca concedida de tipo Integer
    • grades: notas del alumno de tipo List
  • Grade: Representa una nota. Dispone de los campos:
    • subject: nombre de la asignatura de tipo String
    • mark: nota de dicha asignatura de tipo float
  • Database: Representa la base de datos con la que trabajaremos. Dispondrá de un campo privado correspondiente a la lista de estudiantes. Además tendrá un método público denominado queryAllStudents() que retornará la lista de alumnos.

Inicializa la base de datos con los siguientes datos de los alumnos (en este orden):

ID Name Age Group Grant Grades
1 Germán Ginés 23 1º CFGS DAM 2000 [PROGR, 8], [LM, 3]
2 Baldomero 21 1º CFGS DAM 0 [PROGR, 5], [LM, 4]
3 Ana Guerra 17 1º CFGS SMR 4000 [PROGR, 8]

Realiza en Java los métodos necesarios para mostrar por pantalla el resto de las siguientes consultas, usando streams (y optionals cuando sea necesario).

  • showLegalAgeStudentCount(): Debe mostrar los alumnos que sean mayores de edad. La salida sería:

    Número de alumnos mayores de edad: 2
    
  • showStudentNamesOrderAlphabetically(): Debe mostrar los nombre de los alumnos ordenados alfabéticamente. La salida sería:

    Nombre los alumnos (orden alfabético):
    Ana Guerra
    Baldomero
    Germán Ginés
    
  • showFirstTwoStudentsNames(): Debe mostrar los nombres de los dos primeros alumnos. La salida sería:

    Nombre de los dos primeros alumnos:
    Germán Ginés
    Baldomero
    
  • showStudentsNamesExceptTheFirstOne(): Debe mostrar los nombres de todos los alumnos menos del primero, La salida sería:

    Nombres de alumnos (excepto el primero):
    Baldomero
    Ana Guerra
    
  • showStudentsNamesUntilFirstNotLegalAgeOne(): Debe mostrar los nombres de todos los alumnos hasta que encuentre uno menor de edad. Éste ya no lo mostrará. La salida sería:

    Nombres de alumnos (hasta que encontramos uno menor de edad):
    Germán Ginés
    Baldomero
    
  • showStudentsSinceFirstNotLegalAgeOne(): Debe mostrar los nombres de todos los alumnos desde que encontremos uno menor de edad. Éste si lo mostrará. La salida sería:

    Nombres de alumnos (desde que encontramos uno menor de edad):
    Ana Guerra
    
  • showDifferentSubjectsOrderedAlphabetically(): Debe mostrar las asignaturas de las que hay algún alumno matriculado, ordenadas alfabéticamente. La salida sería:

    Asignaturas:
    LM
    PROGR
    
  • showStudentsGrantsAndSum(): Debe mostrar la beca de cada alumno y además la suma de todas las becas. La salida sería:

    Becas:
    Germán Ginés: 2000
    Baldomero: 0
    Ana Guerra: 4000
    Suma de becas: 6000
    
  • getStudentsOlderThan20(): Debe retornar una lista con los nombres de los alumnos mayores de 20 años. El retorno debería la lista:

    [Germán Ginés, Baldomero]
    
  • showYoungestStudentName(): Debe mostrar el nombre de alumna más joven. La salida sería:

    Alumno más joven: Ana Guerra
    
  • showOldestStudentOlderThan23(): Debe mostrar el nombre del alumnos más veterano de entre los que tengan más de 23 años. La salida sería:

    Alumno más veterano mayor de 23: No encontrado
    
  • showStudentNamesWithCommasOrderedByAge(): Debe mostrar una cadena con los nombres de los alumnos separados por coma, ordenados por su edad. La salida sería:

    Alumnos: Ana Guerra, Baldomero, Germán Ginés
    
  • showStudentCountInEachGroup(): Debe mostrar el número de alumnos de cada grupo-clase, ordenados por nombre del grupo. La salida sería:

    Número de alumnos en cada grupo:
     CFGS DAM: 2 alumnos
     CFGM SMR: 1 alumno
    

    Intenta hacer que el listado salga ordenado por el nombre del grupo-clase, a ver si lo consigues.

  • showGrantSummary(): Debe mostrar la estadística de becas de los alumnos, es decir, la beca máxima, la mínima y la media (haciendo todos los cálculos de una sola vez). La salida sería:

    Estadística de becas:
    Máxima: 4000, Mínima: 0, Media: 2000,00
    
  • showAreAnyStudentUnderLegalAge(): Debe mostrar si hay algún alumno menor de edad. La salida sería:

    ¿Algún alumno menor de edad? 
  • showAllStudentHaveGrant(): Debe mostrar si todos los alumnos tienen beca. La salida sería:

    ¿Todos los alumnos tienen beca?: No
    
  • showFirstStudentWithoutGrant(): Debe mostrar el nombre del primer alumno que no tenga beca. La salida sería:

    Nombre del primer alumno sin beca: Baldomero
    
  • showHowManyStudentWithOrWithoutGrant(): Debe mostrar cuántos alumnos hay con beca y cuántos sin beca. La salida sería:

    Alumnos con o sin beca
    Sin beca: 1
    Con beca: 2
    
  • showNumberOfSubjectsOfEachStudent(): Debe mostrar el número de asignaturas de las que está matriculado cada alumnos. La salida sería:

    Número de asignaturas de cada alumno:
    Baldomero: 2
    Ana Guerra: 1
    Germán Ginés: 2
    
  • showNumberOfPassersStudentsOfEachSubject() (NIVEL PRO): Debe mostrar el número de alumnos aprobados en cada asignatura (mark >= 5). La salida sería:

    Número de aprobados por asignatura:
    PROGR - 3 aprobados
    LM - 0 aprobados
    

    Intenta hacer que el listado salga ordenado por nombre de la asignatura.