Skip to content

Ejercicios

Ejercicio 1

Utilizando la clase genérica caja del boletín de genéricos, haz un programa que haga lo siguiente:

  • Guardar en una lista 5 cajas de cadenas. Recorrer la lista y mostrar por pantalla el contenido de todas las cajas. Mostrar una concatenación de todas las cadenas.
  • Guardar en otra lista 5 cajas de long. Recorrer la lista y mostrar por pantalla el contenido de las cajas. Mostrar un resultado de sumarlas todas.
Ejercicio 2

Realiza una interfaz genérica que contenga dos método: T primerContenido(); T ultimoContenido();

Realizar una clase Almacen que contenga una lista de cajas. Dicha clase debe implementar esa interfaz. Los métodos devolverán el contenido de la primera caja y el contenido de la última caja respectivamente.

Ejercicio 3

Realiza el siguiente menú para gestionar una lista simplemente enlazada de cadenas:

  1. Nueva lista
  2. Número de cadenas
  3. Añadir cadena
  4. Eliminar cadena
  5. Contiene cadena
  6. Mostrar lista entera
  7. Salir

En la opción 1, se limpiará toda la lista dejando la lista vacía. En la opción 5, se le pedirá una cadena al usuario y se le dirá si está o no en la lista.

Ejercicio 4

Rellena una lista simplemente enlazada circular de números decimales de tipo float. A continuación, presentar el siguiente menú.

  1. Mostrar la lista
  2. Mostrar siguiente
  3. Eliminar último mostrado
  4. Salir

En la opción 2, la primera vez que se ejecute saldrá el primero de la lista. La Siguiente vez el segundo, y así sucesivamente. Si el último mostrado ha sido el último y se le vuelve a dar esta opción, entonces se mostrará el primero. En la opción 3, se elimina el último mostrado por la opción 2.

Ejercicio 5

Realiza el mismo ejercicio anterior pero con una lista doblemente enlazada circular. Añádele una opción nueva al menú que sea 'Mostrar anterior'.

Ejercicio 6

Realiza el siguiente menú para gestionar una pila de números de tipo byte.

  1. Nueva pila
  2. Consultar elemento
  3. Añadir elemento
  4. Eliminar elemento
  5. Consultar toda la pila
  6. Salir
Ejercicio 7

Realiza el ejercicio anterior pero con una cola.

Ejercicio 8

Un videoclub quiere que le hagamos una aplicación para registrar sus películas. Los requisitos que nos exigen son los siguientes:

  • Enum Genero
    • 3 valores: COMEDIA, FICCION, TERROR
      • Método getCodigo que devuelva el siguiente carácter para cada valor:
        • COMEDIA: C
        • FICCION: F
        • TERROR: T
  • Clase Clave:
    • Atributos: enum Genero y un número entero
    • Atributos privados y solamente los getters necesarios
    • Método toString: devuelve una cadena concatenando del enum con el número entero. Ej: C1, F2, T3
    • Método estático asignarClave: recibe un género y devuelve un objeto de tipo Clave. El número de la clave será 1 para la primera película de comedia, 1 para la primera película de terror, ..., 2 para las segundas, etc.
  • Clase Película
    • Atributos:
      • Clave: objeto de la clase Clave
      • Nombre
      • FechaEstreno. fecha de estreno en España
      • FechaDVD: fecha de venta en DVD
    • Atributos privados y solamente los getters necesarios
    • Constructor: Pelicula(String nombre, Genero genero, LocalDate fechaEstreno, LocalDate fechaDVD)
    • Criterio de comparación de la clase: descendientemente por días que ha tardado la película en salir en DVD desde que se estrenó. Si dos películas tienen el mismo número de días, ordenarlas ascendentemente por orden alfabético del nombre.
    • Se crearán películas de la siguiente tabla:

    Clase Videoclub: esta clase contendrá la lógica con varias colecciones para hacer lo siguiente:

    Orden de la inserción en la colecciones Nombre Género Clave Fecha Estreno Fecha DVD
    1 Poltergeist, juegos diabólicos Terror T1 22/05/2015 22/09/2015
    2 La cumbre escarlata Terror T2 09/10/2015 12/02/2016
    3 Ocho apellidos catalanes Comedia C1 20/112015 18/03/2016
    4 Padres por desigual Comedia C2 01/01/2016 11/05/2016
    5 Star Wars: El despertar de la Fuerza Ficción F1 18/12/2015 20/04/2016
    6 Mad Max: Furia en la carretera Ficción F2 15/05/2015 01/09/2015
    7 Clon de Poltergeist, juegos diabólicos
    8 Clon de Star Wars: El despertar de la fuerza
    • Utilizar las colecciones oportunas para crear la siguiente salida por consola exactamente igual. Insertar las películas en las colecciones en el orden indicado en la primera columna de la tabla. Tener en cuenta lo siguiente:
      • En el 3, utiliza un Comparator de manera anónima
      • En el 4, el criterio de comparación de la clave es primera las de ficción, luego las de terror y por último las de comedia. A igualdad de género, se ordena ascendentemente por el número de la clave. Es decir, el orden sería: F1, F2, T1, T2, C1, C2.
      • En el 5, utilizar ListIterator.

Salidas por consola:

Ejercicio 9

Realiza una aplicación para gestionar los exámenes de junio de 1ºCFGS de Aplicaciones Multiplataforma. Se crearán los exámenes que aparecen en la siguiente tabla y se insertarán en todas las colecciones en el orden indicado en la primera columna de la tabla. La clave estará formada por el día del examen, un guion y la hora de inicio y será autogenerada por la clase. La fecha tiene que ser mostrada con el formato día/mes/año, tal y como está en la tabla.

Orden de inserción en las colecciones Asignatura Descripción Fecha Hora de Inicio Hora de Fin Clave
1 Programación Herencia y colecciones 16/06/2017 08:15 13:30 16-08:15
2 Base de datos Disparadores y SQL 15/06/2017 11:45 14:30 15-11:45
3 Sistemas Informáticos Sistemas en red 20/06/2017 10:15 11:35 20-10:15
4 Entornos de Desarrollo Diagramas de clases 19/06/2017 09:15 11:15 19-09:15
5 Lenguaje de Marcas Hojas de estilo 14/06/2017 08:15 11:15 13-10:15
6 FOL Derechos del trabajador 13/06/2017 10:15 11:15 13-10:15
7 Base de datos Entidad-Relación 15/06/2017 08:15 11:30 15-08:15
8 Clon de Programación
9 Clon de Lenguaje de Marcas

Realizar con dichos exámenes lo siguiente, teniendo en cuenta que las salidas en consola estén bien alineadas y que las horas tienen que salir con dos dígitos. Ejemplo 08:15

  1. Insertarlos en un ArrayList. Muestra el contenido del ArrayList.
  2. Inserta los exámenes en una colección sin duplicados que mantenga el orden de inserción. Muestra la colección sin duplicados.
  3. Muestra el contenido de la colección sin duplicados del apartado 2 al revés.
  4. Utilizando la interfaz List, solicítale al usuario los valores necesarios para mostrar una sublista de la colección sin duplicados del apartado 2. Ejemplo: si el usuario introduce 3 y 5, se muestran los exámenes de Sistemas Informáticos, Entornos de Desarrollo y Lenguaje de Marcas.
  5. Inserta los exámenes en un árbol. Utilizando la interfaz Comparable, ordena los exámenes en el árbol ascendente de asignatura, fecha y hora de inicio en este orden. Es decir, si la asignatura es la misma, entonces ordena por fecha, y si la fecha también es la misma, entonces ordena por hora. El primer examen será el de Base de Datos que empieza a las 08:15 y el último será el de Sistemas Informáticos.
  6. Inserta los exámenes en otro árbol pero esta vez utilizando la interfaz Comparator de manera anónima. En dicha árbol, el orden será por orden descendente de fecha y hora de inicio en ese orden. El primer examen será el de Sistemas Informáticos y el último será el de FOL.
  7. Inserta los exámenes en un mapa ordenado utilizando como clave del mapa el campo clave de los exámenes. Mostrar el contenido del mapa ordenado.
Ejercicio 10

Una empresa nos ha contratado para hacer una aplicación en Java para registrar a sus empleados. Pertenecemos a un equipo de trabajo de programadores dirigidos por un analista. El analista quiere que cumplamos una serie de requisitos ya que luego habrá que unir todo el código hecho por los programadores. Los requisitos son los siguientes:

  • Enum Categoria
    • 3 valores: JEFE, ENCARGADO y EMPLEADO
    • Método getCodigo que devuelva el siguiente carácter para cada valor:
      • JEFE: J
      • ENCARGADO: E
      • EMPLEADO: D
  • Clase Clave
    • Atributos: enum Categoria y un número entero.
    • Atributos privados y solamente los getters necesarios.
    • Método toString: devuelve una cadena concatenando el código del enum con el número entero. Ej: J1
    • Método estático asignarClave: recibe una categoría y devuelve un objeto de tipo Clave. El número de la clave será 1 para el primer jefe, primer encargado y primer empleado, 2 para los segundos, etc.
  • Clase Empleado
    • Atributos:
      • Clave: objeto de la clase Clave
      • Nombre
      • FechaAlta: fecha de alta en la empresa
      • FechaBaja: fecha de baja en la empresa. Si continúan trabajando en la empresa, este atributo se rellena con null
    • Atributos privados y solamente los getters necesarios.
    • Constructor: Empleado(String nombre, Categoria categoria, LocalDate fechaAlta, LocalDate fechaBaja)
    • Criterio de comparación de la clase: descendentemente por días trabajados.
    • En los 3 árboles se añadirán los siguientes empleados y en este mismo orden:

      Orden de inserción en los árboles Nombre Categoría Fecha Alta Fecha Baja
      1 Pepe Empleado 21/03/2011 22/04/2013
      2 Juan Encargado 29/02/2012 No tiene
      3 María Jefe 30/04/2010 No tiene
      4 Laura Empleado 30/12/2010 No tiene
      5 Esteban Encargado 05/11/2010 11/02/2015
      6 Pedro Jefe 16/08/2009 No tiene
      7 Yolanda Empleado 27/07/2012 01/10/2013
      8 Nuria Jefe 31/08/2009 No tiene
      9 Antonio Encargado 28/01/2011 14/05/2014
      10 Clone de Pepe
      11 Clone de Esteban
      12 Clone de Pedro

    Clase Arboles: esta clase contendrá el main con 3 árboles de empleados:

    • Los tres árboles son los siguientes:
      • Árbol con los empleados ordenados descendentemente por días trabajados.
      • Árbol con los empleados ordenados ascendentemente por orden alfabético de los nombres de los empleados. Utiliza l interfaz Comparator de manera anónima.
      • TreeMap con los empleados ordenador descendentemente por categoría profesional y a misma categoría, se ordena ascendentemente por número. Utilizar como clave del TreeMap el atributo clave del empleado.
    • De todos los árboles hay que mostrar los datos. La salida por consola debe ser exactamente igual a la siguiente: