En la anterior entrega de nuestro curso de Java os hablamos de los mapas de datos, y os pusimos un ejemplo sencillo de como podían utilizarse.
En la nueva entrega del curso, vamos a continuar con los mapas de datos, pero en este caso os hablaremos de una de las variantes que tienen, los mapas de datos enumerados (EnumMap). También os pondremos un ejemplo de cómo pueden utilizarse.
Para finalizar, os propondremos un ejercicio para que pongáis en práctica los conceptos aprendidos, relacionados con los mapas.
La clase EnumMap es una implementación especial de los mapas adaptada a claves de un tipo enumerado.
Internamente trabaja como si se tratase de un array, las operaciones de un EnumMap poseen la misma eficiencia que las pertenecientes a un array. Además de esto, permite manejar con total flexibilidad con tipos enumerados, manteniendo la ordenación natural de las variables. Puedes ver algunos cursos online útiles de Community Manager.
Ahora , vamos a hacer un ejemplo para que veáis como puede utilizarse:
Escribir una clase que relacione cada día de la semana con un objeto de la clase Menú, que representa el menú de la comida:
- El día de la semana es un objeto de una clase enumerado
Lo primero de todo, vamos con la clase Menu
[java]
/** * Menu de la comida */
public class Menu
{
// atributos
private String primerPlato;
private String segundoPlato;
private String postre;
/** Constructor */
public Menu(String primerPlato, String segundoPlato,
String postre)
{
this.primerPlato=primerPlato;
this.segundoPlato=segundoPlato;
this.postre=postre;
}
/*** Convierte a string */
public String toString()
{
return «1º: «+primerPlato+», 2º: «+segundoPlato+ «, postre: «+postre;
}
}
[/java]
Ahora ya podemos ir con la clase que utilizará el mapa de enumerados, pero antes de eso, la clase con los enumerados
[java]
public enum DiaSemana
{
lunes, martes, miercoles, jueves, viernes, sabado, domingo
}
[/java]
[java]
import java.util.*;
/**
* Clase que representa un menu semanal
*/
public class MenuSemanal
{
// mapa de menus
private EnumMap
/**
* Constructor
*/
public MenuSemanal()
{
menu=new EnumMap
}
/**
* poner el menú de un día concreto
*/
public void ponMenu(DiaSemana dia, Menu comida)
{
menu.put(dia,comida);
}
/**
* Consultar el menu de un día
*/
public Menu consultaMenu(DiaSemana dia) {
return menu.get(dia);
}
}
[/java]
Si queréis hacer un programa principal, podréis utilizar el «main» del ejemplo de la entrega anterior del curso, pero con algunas modificaciones, está claro.
Ahora vamos a proponeros un ejercicio basado en mapas y que os hará ver las cosas más claras:
Disponemos de un taller de reparación de coches y queremos organizar las citas para cada una de las semanas del mes. Durante cada día se podrán dar varias citas que serán atendidas en el orden de haberse registrado.
Indicaciones:
- La clave serán los días de la semana.
- El valor sera una linkedlist, que contendrá objetos de la clase Cita.
- La implementación de la clase Cita se deja a la elección de cada usuario.
Métodos a implementar:
- Añade una cita a una día determinado
- Borra una cita
- Mostrar por pantalla todas las citas que contiene el mapa
Después de esto os emplazamos para la siguiente entrega. Os daremos la solución completa y detallada a este ejercicio y os comentaremos brévemente cual será la siguiente estructura de datos de la que hablaremos en el curso.