IES GASPAR MELCHOR DE JOVELLANOS
PRÁCTICA 15 - EJERCICIOS DE PROGRAMACIÓN EN JAVA.
COLECCIONES
Las colecciones son agrupaciones de objetos. Muchas aplicaciones requieren agrupar objetos:
- Agendas
- Catálogos de librerías o de productos
- Sistema de matrícula de la Universidad
- …
El número de elementos a agrupar varía, además debemos poder añadir y eliminar elementos,
manipular los elementos de la colección: búsqueda de elementos, consulta y modificación de
elementos, listado de todos los elementos de la lista…
El paquete java.util contiene una serie de interfaces para trabajar con colecciones.
La interfaz collection permite básicamente insertar, borrar y recorrer la lista con el uso de un
iterador.
La interfaz List amplia el comportamiento de collection permitiendo además extraer, buscar y
reemplazar los valores contenidos en la lista, así como extraer y borrar elementos en mitad de
la lista.
ArrayList y Linkedlist son subclases de List.
Ejemplo: AGENDA O LIBRO DE NOTAS
Vamos a implementar una aplicación que permita almacenar “Notas” en una agenda, para ello
vamos a utilizar una colección, en este caso un “ArrayList de String” que lo definiremos como
un atributo privado de la clase.
La aplicación debe permitir:
- Almacenar nota.
- Consultar nota.
- Borrar nota.
- Listar todas las notas almacenadas en la agenda.
- Se puede saber cuántas notas se tienen guardadas.
1. Copia el código siguiente en un nuevo proyecto y completa los métodos utilizando los
métodos de la clase ArrayList.
import java.util.*;
public class LibroNotas
{ private ArrayList<String> notas;
public void almacenarNota(String nota)
{
notas.add(nota);
}
public void borrarNota(String nota){
public int numeroDenotas() {
}
Página | 1
IES GASPAR MELCHOR DE JOVELLANOS
PRÁCTICA 15 - EJERCICIOS DE PROGRAMACIÓN EN JAVA.
/*Muestra en pantalla la nota correspondiente a numeroNota.Comprueba que el
número de nota esté comprendido entre 0..notas.size(), en caso contrario
muestra un mensaje de nota no válida.*/
public void mostrarNota(int numeroNota){
}
public void listarNotas()
{
//bucle for-each : para cada valor de la colección hacer
//se suele utilizar cuando queremos recorrer la colección completa
for(String nota : notas) {
System.out.println(nota);
}
}
public void listarNotasConIterador()
{
//crea un objeto iterador
Iterator<String> it = notas.iterator();
//mientras haya elementos en la lista
while(it.hasNext()) {
System.out.println(it.next());
}
}
public static void main(String[]args)
{
LibroNotas l=new LibroNotas();
l.notas=new ArrayList <String>();
l.almacenarNota("9:05 Desayuno de Trabajo");
l.almacenarNota("9:45 Reunión Departamento");
l.almacenarNota("10:30 Revisión de Proyectos");
l.almacenarNota("14:30 Valoración y entrega de Proyectos");
l.almacenarNota("15:00 Comida con Ana");
}
}
2. Completa el main invocando a todos los métodos anteriores.
3. Observa los métodos utilizados para listar las notas. Crea un método para borrar todas
las notas utilizando el bucle for-each ¿Qué ocurre?. Crea otro método de borrado
completo utilizando ahora un iterador y el método de borrado de la clase iterator<E>.
4. Añade un nuevo método para añadir una nota en una posición determinada de la lista.
Ambos valores serán argumentos de entrada al método.
5. Crea un nuevo método para modificar una nota almacenada en la lista en una posición
determinada. Ambos valores serán argumentos de entrada al método.
Página | 2
IES GASPAR MELCHOR DE JOVELLANOS
PRÁCTICA 15 - EJERCICIOS DE PROGRAMACIÓN EN JAVA.
6. Crea un nuevo método que permita borrar los elementos de la lista desde una posición
hasta otra. Ambas posiciones serán argumentos de entrada al método.
Ejemplo: CITAS MÉDICAS.
Vamos a implementar una aplicación que permita manejar una cola de una consulta médica.
Para ello se utilizará una estructura que guardará los DNI de las personas que estén apuntadas
a la cola. Debe crearse el siguiente menú:
1. Apuntarse a la cola (al final).
2. Llamar a consulta (borrar de la cola el primero, porque le toca).
3. Borrar de la cola (un DNI cualquiera desea borrarse de la cola) para resolverlo
eliminar el dni, dejando el nodo vacío.
4. Mostrar el siguiente paciente. (Visualiza en pantalla el dni siguiente a llamar a
consulta).
5. Listar todos los dnis en cola.
Para ello vamos a utilizar una colección, en este caso un “LinkedList de String” que lo
definiremos como un atributo privado de la clase. Está clase incluye los métodos addLast() y
removeFirst() necesarios para implementar una cola.
Una cola es una lista FIFO donde el primero en entrar será el primero en salir. En una cola las
inserciones se realizan siempre por el final.
7. Copia el código siguiente en un nuevo proyecto y completa los métodos utilizando los
métodos de la clase LinkedList.
import java.util.*;
public class SalaDeEspera
{
private LinkedList <String> colaMedica;
public void apuntarseACola(String dni)
{
//añadir elemento al final de la cola
}
public void llamarAConsulta()
{
//borrar primer elemento de la cola
}
public int nroPacientesEnCola()
{
//devuelve el número de pacientes en cola
}
public void siguienteEnLLamar()
{
//muestra el dni del siguiente paciente en llamar. Comprobad que la cola no
//está vacía
}
Página | 3
IES GASPAR MELCHOR DE JOVELLANOS
PRÁCTICA 15 - EJERCICIOS DE PROGRAMACIÓN EN JAVA.
public void pacientesEnCola()
{
//muestra los dnis de todos los pacientes en la cola
}
public static void main(String[]args)
{
SalaDeEspera s=new SalaDeEspera();
s.colaMedica=new LinkedList <String>();
//menú de opciones.
}
}
Página | 4