Guia Colecciones 1 1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 25

CURSO DE PROGRAMACIÓN FULL STACK

COLECCIONES
PARADIGMA ORIENTADO EN OBTEJOS
Objetivos de la Guía
En esta guía aprenderemos a:

• El concepto de colecciones en java

• Crear y usar listas, conjuntos y mapas

• Entender cuando usar cada una de las distintas


colecciones

• Modificar y recorrer colecciones

• Agregar, buscar y eliminar elementos en las


colecciones

P¿QUÉ SON LAS COLECCIONES?P


Previo a esta guía, nosotros manejábamos nuestros objetos de uno en uno, no teníamos manera
de manejar varios objetos a la vez, pero, para esto existen las colecciones.

Una colección representa un grupo de objetos, conocidos como elementos. Podemos crear una
colección con cualquier tipo de objeto, incluso los creados por nosotros. La única restricción es
que no podremos crear una colección sólo de tipo primitivo, para eso usaremos los tipos de
Objetos equivalentes a los primitivos. Por ejemplo: en vez de int, hay que utilizar Integer. Aquí
dejamos una tabla de los objetos equivalentes a los primitivos que Java nos trae.

Tipos de datos

Primitivos Objetos

int Integer

double Double

long Long

char Character

boolean Boolean

String ya es un objeto, por lo que no tiene


tipo primitivo

Sigamos con nuestro ejemplo de la cajonera, de la guía anterior para terminar de cerrar el
concepto. Hemos tenido muchos pedidos, por lo que construimos un almacén donde guardar
todas las cajoneras que vamos fabricando. De esta forma tenemos muchas cajoneras (elementos)
dentro de un almacén (colección).

1
Dijimos que una colección es un grupo de objetos, pero para obtener una colección vamos a
utilizar unas clases propias de Java. Estas clases, que van a ser el almacén de los objetos, nos
proveen con una serie de herramientas (métodos) comunes, para trabajar con los elementos de la
colección, como, por ejemplo: agregar y eliminar elementos u obtener el tamaño de la colección,
etc.

La principal diferencia entre las colecciones y los arreglos tradicionales es que las colecciones
crecen de manera dinámica a medida que se van agregando objetos. No necesitamos saber de
antemano la cantidad de elementos con la que vamos a trabajar.

Usaremos el Java Collections Framework dentro del paquete java.util. El Collections Framework
es una arquitectura compuesta de interfaces y clases. Dentro de este framework están las
colecciones que vamos a trabajar, las listas, conjuntos y mapas. Nota: el concepto de interfaces lo
vamos a explicar más adelante.

¿QUÉ ES UN FRAMEWORK?
Un framework es un marco de trabajo el cual contiene un conjunto estandarizado de conceptos,
prácticas, criterios y herramientas para hacer frente a un tipo de problemática particular y resolver
nuevos problemas de índole similar. Las clases del Java Collections Framework son las
siguientes:

2
P¿QUÉ COLECCIONES VAMOS A VER EN ESTA GUÍA?P
Como pudimos ver en el grafico del framework de colecciones, hay varios tipos de colecciones, en
esta guía nos vamos a centrar en las listas, los conjuntos y los mapas. Además veremos el uso
del Iterable.

PLISTASP
Las listas son un tipo de colección que nos permiten tener un control preciso sobre el lugar que
ocupa cada elemento. Es decir, sus elementos están ordenados y podemos elegir en qué lugar
colocar un elemento mediante su índice(lugar que ocupa). Esto nos da una de las características
más importantes de las listas: pueden guardar elementos duplicados. Es decir, permite que lista[0]
sea exactamente igual a lista[1].

ARRAYLIST
Se implementa como un arreglo de tamaño variable. A medida que se agregan más elementos, su
tamaño aumenta dinámicamente. Es el tipo más común. Básicamente es un array o vector de
tamaño dinámico, con las características propias de las listas.

Ya puedes visualizar el primer video de Colecciones

LINKEDLIST

Se implementa como una lista de doble enlace. Su rendimiento al agregar y quitar es mejor que
Arraylist, pero peor en los métodos set y get.
¿Qué es una lista de doble enlace?

Básicamente una lista de doble enlace es un tipo de lista enlazada que permite moverse hacia
delante y hacia atrás.

Si quieres saber más te dejamos este enlace:

• https://www.deltapci.com/java-listas-doblemente-enlazadas/

3
Las listas son las colecciones más simples y más usadas en la
programación, pero dependerá de cada proyecto qué colección
elegir.

PCONJUNTOSP
Los conjuntos o en ingles Set modelan una colección de objetos de una misma clase donde cada
elemento aparece solo una vez, no puede tener duplicados, a diferencia de una lista donde los
elementos podían repetirse. El framework trae varias implementaciones de distintos tipos de
conjuntos:

HASHSET
Se implementa utilizando una tabla hash para darle un valor único a cada elemento y de esa
manera evitar los duplicados. Es decir, el HashSet crea un código hash para cada valor, evitando
que hayan dos valores iguales o duplicados y a diferencia del TreeSet sus elementos no están
ordenados.

¿Qué es un Hash?

Una función criptográfica hash- usualmente conocida como “hash”- es un algoritmo matemático
que transforma cualquier bloque arbitrario de datos en una nueva serie de caracteres
alfanuméricos (mezcla entre letras y números) con una longitud fija. Independientemente de la
longitud de los datos de entrada, el valor hash de salida tendrá siempre la misma longitud.

4
Esto lo que hace el HashSet cada vez que se le ingresa un dato, lo transforma en ese valor hash
que es único para ese dato.

Si quieres saber más te dejamos este enlace:

• https://latam.kaspersky.com/blog/que-es-un-hash-y-como-funciona/2806/

TREESET
Se implementa utilizando una estructura de árbol (árbol rojo-negro en el libro de algoritmos) Te
dejamos un link a este concepto: https://es.wikipedia.org/wiki/%C3%81rbol_rojo-negro.

La gran diferencia entre el HashSet y el TreeSet, es que el TreeSet mantiene todos sus elementos
de manera ordenada (forma ascendente), pero los métodos de agregar, eliminar son más lentos
que el HashSet ya que cada vez que le entra un elemento debe posicionarlo para que quede
ordenado. Además de ordenarlos el TreeSet tampoco admite duplicados.

LINKEDHASHSET
Está entre HashSet y TreeSet. Se implementa como una tabla hash con una lista vinculada que se
ejecuta a través de ella, por lo que proporciona el orden de inserción.

PMAPASP
Los mapas modelan un objeto a través de una llave y un valor. Esto significa que cada valor de
nuestro mapa, va a tener una llave única para representar dicho valor. Las llaves de nuestro mapa
no pueden repetirse, pero los valores sí. Un ejemplo sería una persona que tiene su DNI/RUT
(llave única) y como valor puede ser su nombre completo, puede haber dos personas con el
mismo nombre, pero nunca con el mismo DNI/RUT.

Los mapas al tener dos datos, también vamos a tener que especificar el tipo de dato tanto de la
llave y del valor, pueden ser de tipos de datos distintos. A la hora de crear un mapa tenemos que
pensar que el primer tipo dato será el de la llave y el segundo el valor.

Son una de las estructuras de datos importantes del Framework de Collections. Las
implementaciones de mapas son HashMap, TreeMap, LinkedHashMap y HashTable.

HASHMAP
Es un mapa implementado a través de una tabla hash, las llaves se almacenan utilizando un
algoritmo de hash solo para las llaves y evitar que se repitan.

5
TREEMAP
Es un mapa que ordena los elementos de manera ascendente a través de las llaves.

LINKEDHASHMAP
Es un HashMap que conserva el orden de inserción.

Veremos que los mapas al tener una llave trabajan muy


parecidos a lo que van a ser las bases de datos que vamos a
ver más adelante.

MANOS A LA OBRA – DETECCIÓN DE ERRORES


Corrige el siguiente código:

Array<int> listado = new ArrayList;

TreeSet<String> = TreeSet();

HashMap<Integer> personas = new HashMap<>;

PAÑADIR UN ELEMENTO A UNA COLECCIÓNP


Las colecciones constan con funciones para realizar distintas operaciones, en este caso si
queremos añadir un elemento a las listas o conjuntos vamos a tener que utilizar la función add(T).
Sólo en el caso de los mapas vamos a utilizar la función put(llave,valor).

6
EJERCICIO COLECCIONES
Toma la Lista, el Conjunto y el Mapa del ejemplo y agrega 5 objetos a cada uno.

PELIMINAR UN ELEMENTO DE UNA COLECCIÓNP


Cada colección consta con métodos para poder remover elementos del tipo que sea la colección.

LISTAS
Las listas constan de dos métodos:

• remove(int índice): Este método remueve un elemento de un índice especifico. Esto mueve
los elementos, de manera que no queden índices sin elementos.

• remove(elemento): Este método remueve la primera aparición de un elemento a borrar en una


lista

7
CONJUNTOS
Ya que los conjuntos no constan de índices, solo se puede borrar por elemento.

remove(elemento): Este método remueve la primera aparición de un elemento a borrar en un


conjunto

MAPAS
La parte más importante de los elementos de un mapa es la llave del elemento, que es la que
hace el elemento único, por eso en los mapas solo podemos remover un elemento por su llave.

remove(llave): Este método remueve la primera aparición de la llave de un elemento a borrar en


un mapa.

Toma la Lista, el Conjunto y el Mapa que hiciste previamente y elimina en cada uno un objeto de
cada forma que aprendiste arriba.

PRECORRER UNA COLECCIÓNP


Si quisiéramos mostrar todos los elementos que le hemos agregado y que componen a nuestra
colección vamos a tener que recorrerla.

Para recorrer una colección, vamos a tener que utilizar el bucle forEach. El bucle comienza con la
palabra clave for al igual que un bucle for normal. Pero, en lugar de declarar e inicializar una
variable contadora del bucle, declara una variable vacía, que es del mismo tipo que la colección,
seguido de dos puntos y seguido del nombre de la colección. La variable recibe en cada iteración
un elemento de la colección, de esa manera si nosotros mostramos esa variable, podemos
mostrar todos los elementos de nuestra colección.

Para recorrer mapas vamos a tener que usar el objeto Map.Entry en el for each. A través del entry
vamos a traer los valores y las llaves, si no, podemos tener un for each para cada parte de nuestro
mapa sin utilizar el objeto Map.Entry.

8
Para saber más sobre la clase Map y el objeto Entry: Map.Entry

For Each:

for (Tipo de dato variableVacia : Colección){


}

Ya puedes visualizar el segundo, tercero y cuarto video de Colecciones

9
MANOS A LA OBRA – DETECCIÓN DE ERRORES
HashMap<Integer> personas = new HashMap<>;

String n1 = “Albus”;

String n2 = “Severus”;

personas.add(n1);

personas.add(n2);

PITERATORP
El Iterator es un objeto que pertenece al framework de colecciones. Este, nos permite recorrer,
acceder a la información y eliminar algún elemento de una colección. Gracias al Iterator podemos
eliminar un elemento, mientras recorremos la colección. Ya que, cuando queremos eliminar algún
elemento mientras recorremos una colección con el bucle ForEach, nos va a tirar un error.

Como el Iterator es parte del framework de colecciones, todas las colecciones vienen con el
método iterator(), este, devuelve las instrucciones para iterar sobre esa colección. Este método
iterator(), devuelve la colección, lo recibe el objeto Iterator y usando el objeto Iterator, podemos
iterar sobre nuestra colección.

Para poder usar el Iterator es importante crear el objeto de tipo Iterator, con el mismo tipo de dato
que nuestra colección.

El Iterator contiene tres métodos muy útiles para lograr esto:

1. boolean hasNext(): Retorna verdadero si al iterator le quedan elementos por iterar

2. Object next(): Devuelve el siguiente elemento en la colección, mientras le método


hasNext() retorne true. Este método es el que nos sirve para mostrar el elemento,

3. void remove(): Elimina el elemento actual de la colección.

10
PELIMINAR UN ELEMENTO DE UNA COLECCIÓN CON ITERATORP
Como pudimos ver más arriba para eliminar un elemento de una colección vamos a tener que
utilizar la función remove() del Iterator. Esto se aplica para el resto de nuestras colecciones. Los
mapas son los únicos que no podemos eliminar mientras las iteramos.

MANOS A LA OBRA - DETECCIÓN DE ERRORES


ArrayList<String> = new ArrayList()

bebidas.put(“café);

bebidas.add(“té”);

Iterator<String> it =bebidas.iterator();

whale (it.next()){

if (it.next().equals(“café”)){

it.remove();

Ya puedes visualizar el quinto video de Colecciones

PORDENAR UNA COLECCIÓNP


Los elementos, que vamos agregando a nuestra colección se van a mostrar según se fueron
agregando y nosotros capaz, necesitemos mostrar o tener todos los elementos ordenados.

Para ordenar una colección, vamos a tener que utilizar la función Collections.sort(colección). La
función, que es parte de la clase Collections, recibe la colección y la ordena para después poder
mostrarla ordenada de manera ascendente.

11
Algunas colecciones, como los conjuntos o los mapas no pueden utilizar el sort(). Ya que por
ejemplo los HashSet, manejan valores Hash y el sort() no sabe ordenar por hash, si no por
elementos. Por otro lado, los mapas al tener dos datos, el sort() no sabe por cuál de esos datos
ordenar.

Entonces, para ordenar los conjuntos, deberemos convertirlos a listas, para poder ordenar esa
lista por sus elementos. Y a la hora de ordenar un mapa como tenemos dos datos para ordenar,
vamos a convertir el HashMap a un TreeMap.

Nota: recordemos que los TreeSet y TreeMap se ordenan por sí mismos.

PCOLECCIONES CON OBJETOS CREADOS POR NOSOTROSP


De la misma manera que podemos crear colecciones con los tipos de datos de Java, podemos
crear colecciones de algún objeto, de una clase creada por nosotros, previamente. Esto, nos
servirá para manejar varios objetos al mismo tiempo y acceder a ellos de una manera más sencilla.
Por ejemplo, tener una lista de alumnos, siendo cada Alumno un objeto con sus atributos.

AÑADIR UN OBJETO A UNA COLECCIÓN


Para añadir un objeto a una colección tenemos que primero crear el objeto que queremos trabajar
y después crear una colección donde su tipo de dato sea dicho objeto.

La manera de agregar los objetos a la colección es muy parecida a lo que habíamos visto
previamente.

Las colecciones Tree, ya sean TreeSet o TreeMap, son las únicas que no vamos a poder agregar
como siempre. Ya que, los Tree, siendo colecciones que se ordenan a sí mismas, debemos
informarle al Tree como va a ordenarse. Pensemos que un objeto posee más de un
dato(atributos), entonces, el Tree, no sabe por qué atributo debe ordenarse.

Para solucionar esto, vamos a necesitar un Comparator, este, le dará la pauta de como ordenarse
y sobre que atributo. El Comparator está explicado más abajo en la guía y muestra como
agregárselo a los Tree.

12
PRECORRER UNA COLECCIÓN CON OBJETOSP
Para recorrer una colección donde su tipo de dato sea un objeto creado por nosotros, vamos a
seguir utilizando los métodos que conocemos, el for each o el iterator. Pero a la hora de mostrar el
objeto con un System.out.println, no nos va a mostrar sus atributos. Sino que, nos va a mostrar el
nombre de la clase, el nombre del objeto, una arroba y un código hash para representar los
valores del objeto.

Cuando queremos mostrar el libro, que está siendo recorrido por el for each, nos mostraría algo
así: Libreria.Libro@14ae5a5

Para solucionar este problema, vamos a tener que sobrescribir(Override), un método de la clase
String dentro de la clase de nuestro objeto. Este método va a transformar, el nombre de la clase, el
nombre del objeto y el hash, en una cadena legible para imprimir.

Para poder usar este método vamos a ir a nuestra clase, ahí hacemos click derecho, insert code y
le damos a toString(). Eso nos va a generar un método toString() con los atributos de nuestro
objeto y que retorna una cadena para mostrar el objeto.

13
El toString lo podemos modificar a nuestro gusto para que nos
muestre la información como la necesitemos.

Este método se va a llamar solo, sin necesidad que lo llamemos nosotros, siempre que queramos
mostrar nuestro objeto en un System.out.println. Y mostrará la línea que se ve en el return.

EJERCICIO LISTA LIBROS


¡Es tu turno! Crea una lista de Libros y muestra el título de cada uno con un bucle.

PCOMPARATORP
A la hora de querer ordenar una colección de objetos en Java, no podemos utilizar la función sort,
ya que el sort se utiliza para ordenar colecciones con elementos uniformes. Pero los objetos
pueden tener dentro distintos tipos de datos (atributos). Entonces, nuestra función sort no sabe
por cuál tipo de dato o atributo ordenar. Para esto, utilizamos la interfaz Comparator con su
función compare() dentro de nuestra clase entidad.

Supongamos que tenemos una clase Perro, que tiene como atributos el nombre del perro y la
edad. Nosotros queremos ordenar los perros por edad, deberemos crear el método compare de la
clase Comparator en la clase Perro.

14
Explicación del método:

• El método crea un objeto estático de la interfaz Comparator. Este nos va a permitir utilizar
a través de un sobrescribir (Override) el método compare, el mismo nos deja comparar dos
objetos para poder ordenarlos. Este objeto se crea static para poder llamar al método solo
llamando a la clase, sin tener que crear otro objeto Comparator, en este caso la clase
Perro.

• Dentro de la creación de objeto se crea un método de la clase Comparator llamado


compare, arriba del método se puede ver la palabra Override. Override, se usa cuando
desde una subclase (Perro), queremos utilizar un método de otra clase (Comparator) en
nuestra subclase.

• El método recibe dos objetos de la clase Perro y retorna una comparación entre los dos
usando los get para traer el atributo que queríamos comparar y usa la función compareTo,
que devuelve 0 si la edad es la misma, 1 si la primera edad es mayor a la segunda y -1 si la
primera edad es menor a la segunda.

• Si quisiéramos cambiar el atributo que usa para ordenar, pondríamos otro atributo en el
get del return.

USO DEL MÉTODO COMPARATOR


Como el comparator se va a usar para ordenar nuestras colecciones, se va a poner en el llamado
de la función Collections.sort() y se va a poner en la inicialización de cualquier tipo de Tree.

USO DE COMPARATOR EN TREESET


En los TreeSet necesitamos crearlos con el comparator porque como el TreeSet se ordena solo,
necesitamos decirle al TreeSet, bajo que atributo se va a ordenar, por eso le pasamos el
comparator en el constructor.

15
USO DE COMPARATOR EN MAPAS

Ya puedes visualizar el sexto video de Colecciones

PCOLECCIONES EN FUNCIONESP
A la hora de querer pasar una colección a una función, deberemos recordar que Java es
fuertemente tipado, por lo que deberemos poner el tipo de dato de la colección y que tipo de
colección es cuando la pongamos como argumento.

LISTAS

CONJUNTOS

16
MAPAS

PDEVOLVER UNA COLECCIÓN EN FUNCIONESP


Para devolver una colección en una función, tenemos que hacer que el tipo de dato de nuestra
función sea la colección que queremos devolver, teniendo también el tipo de dato que va a
manejar dicha colección.

LISTAS

CONJUNTOS

17
MAPAS

PROYECTO CON EJEMPLOS DE COLECCIONES


El proyecto contiene un paquete con un main para cada tipo de colección y un paquete más que
muestra cómo usar una lista con un objeto. Además, contiene algunos métodos que no están
explicados en la teoría.

Pueden encontrar un ejemplo de Colecciones en Java en tu Aula


Virtual.

PCLASE COLLECTIONSP
La clase Collections es parte del framework de colecciones y también es parte del paquete
java.util. Esta clase nos provee de métodos que reciben una colección y realizan alguna
operación o devuelven una colección, según el método. Vamos a mostrar algunos de los métodos,
pero hay muchos más.

Método Descripción

Este método reemplaza todos los elementos de la lista con un


fill(List<T> lista, Objeto objeto)
elemento especifico.

frequency(Collection<T> Este método retorna la cantidad de veces que se encuentra


coleccion, Objeto objeto) un elemento especifico en una colección.

replaceAll(List<T> lista, T Este método reemplaza todas las apariciones de un elemento


valorViejo, T valorNuevo) especifico en una lista, con otro valor.

reverse(List<T> lista) Este método invierte el orden de los elementos de una lista.

Este método retorna un comparator que invierte el orden de


reverseOrder()
los elementos de una colección.

18
Este método modifica la posición de los elementos de una
shuffle(List<T> lista)
lista de manera aleatoria.

Este método ordena los elementos de una lista de manera


sort(List<T> lista)
ascendente.

METODOS EXTRAS COLECCIONES


En la guía se muestran las acciones más realizadas con colecciones, con la ayuda de sus métodos,
pero también existen otros métodos en las colecciones para realizar otras acciones. Nota: los
métodos de los List y los Set, son los mismos, quitando el get y el set.

LISTAS Y CONJUNTOS

Método Descripción.

size() Este método retorna el tamaño de una lista / conjunto.

Este método se usa para remover todos los elementos de una


clear()
lista / conjunto.

Este método retorna un elemento de la lista según un índice


get(int índice)
de la lista.

Este método guarda un elemento en la lista en un índice


set(int índice, elemento)
especifico.

Este método retorna verdadero si la lista / conjunto está vacío


isEmpty()
y falso si no lo está.

Este método recibe un elemento dado por el usuario y revisa


contains(elemento) si el elemento se encuentra en la lista o no. Si el elemento se
encuentra retorna verdadero y si no falso.

Ya puedes visualizar el septimo video de Colecciones

19
MAPAS

Método Descripción.

Este método se usa para remover todos los elementos de un


clear()
mapa.

Este método recibe una llave dada por el usuario y revisa si la


containsKey(Llave) llave se encuentra en la lista o no. Si la llave se encuentra
retorna verdadero y si no falso.

Este método recibe un valor dado por el usuario y revisa si el


containsValue(Valor) valor se encuentra en el mapa o no. Si el elemento se
encuentra retorna verdadero y si no falso.

Este método retorna un elemento del mapa según una llave


get(Llave)
dentro del mapa.

Este método retorna verdadero si el mapa está vacío y falso si


isEmpty()
no lo está.

size() Este método retorna el tamaño de un mapa.

Este método crea una colección según los valores del mapa.
values() Ósea, que retorna una lista, por ejemplo, con todos los
valores del mapa.

Este método se usa para remover todos los elementos de un


clear()
mapa.

Ya puedes visualizar el octavo video de Colecciones

20
EJERCICIOS DE APRENDIZAJEP
En este módulo vamos a continuar modelando los objetos con el lenguaje de programación Java,
pero ahora vamos a utilizar las colecciones para poder manejarlas de manera más sencilla y
ordenada.

VIDEOS: Te sugerimos ver los videos relacionados con este tema, antes de empezar los
ejercicios, los podrás encontrar en tu aula virtual o en nuestro canal de YouTube.

1. Diseñar un programa que lea y guarde razas de perros en un ArrayList de tipo String. El
programa pedirá una raza de perro en un bucle, el mismo se guardará en la lista y
después se le preguntará al usuario si quiere guardar otro perro o si quiere salir. Si decide
salir, se mostrará todos los perros guardados en el ArrayList.

2. Continuando el ejercicio anterior, después de mostrar los perros, al usuario se le pedirá


un perro y se recorrerá la lista con un Iterator, se buscará el perro en la lista. Si el perro
está en la lista, se eliminará el perro que ingresó el usuario y se mostrará la lista
ordenada. Si el perro no se encuentra en la lista, se le informará al usuario y se mostrará
la lista ordenada.

3. Crear una clase llamada Alumno que mantenga información sobre las notas de distintos
alumnos. La clase Alumno tendrá como atributos, su nombre y una lista de tipo Integer
con sus 3 notas.

En el servicio de Alumno deberemos tener un bucle que crea un objeto Alumno. Se pide
toda la información al usuario y ese Alumno se guarda en una lista de tipo Alumno y se le
pregunta al usuario si quiere crear otro Alumno o no.

Después de ese bucle tendremos el siguiente método en el servicio de Alumno:

Método notaFinal(): El usuario ingresa el nombre del alumno que quiere calcular su nota
final y se lo busca en la lista de Alumnos. Si está en la lista, se llama al método. Dentro
del método se usará la lista notas para calcular el promedio final de alumno. Siendo este
promedio final, devuelto por el método y mostrado en el main.

Pueden encontrar un ejemplo de Colección como Atributo en tu Aula


Virtual.

4. Un cine necesita implementar un sistema en el que se puedan cargar peliculas. Para esto,
tendremos una clase Pelicula con el título, director y duración de la película (en horas).
Implemente las clases y métodos necesarios para esta situación, teniendo en cuenta lo
que se pide a continuación:

En el servicio deberemos tener un bucle que crea un objeto Pelicula pidiéndole al usuario
todos sus datos y guardándolos en el objeto Pelicula.

Después, esa Pelicula se guarda una lista de Peliculas y se le pregunta al usuario si quiere
crear otra Pelicula o no.

Después de ese bucle realizaremos las siguientes acciones:

21
• Mostrar en pantalla todas las películas.

• Mostrar en pantalla todas las películas con una duración mayor a 1 hora.

• Ordenar las películas de acuerdo a su duración (de mayor a menor) y mostrarlo en


pantalla.

• Ordenar las películas de acuerdo a su duración (de menor a mayor) y mostrarlo en


pantalla.

• Ordenar las películas por título, alfabéticamente y mostrarlo en pantalla.

• Ordenar las películas por director, alfabéticamente y mostrarlo en pantalla.

5. Se requiere un programa que lea y guarde países, y para evitar que se ingresen repetidos
usaremos un conjunto. El programa pedirá un país en un bucle, se guardará el país en el
conjunto y después se le preguntará al usuario si quiere guardar otro país o si quiere salir,
si decide salir, se mostrará todos los países guardados en el conjunto. (Recordemos hacer
los servicios en la clase correspondiente)

Después deberemos mostrar el conjunto ordenado alfabéticamente: para esto recordar


cómo se ordena un conjunto.

Por último, al usuario se le pedirá un país y se recorrerá el conjunto con un Iterator, se


buscará el país en el conjunto y si está en el conjunto se eliminará el país que ingresó el
usuario y se mostrará el conjunto. Si el país no se encuentra en el conjunto se le informará
al usuario.

6. Se necesita una aplicación para una tienda en la cual queremos almacenar los distintos
productos que venderemos y el precio que tendrán. Además, se necesita que la
aplicación cuente con las funciones básicas.

Estas las realizaremos en el servicio. Como, introducir un elemento, modificar su precio,


eliminar un producto y mostrar los productos que tenemos con su precio (Utilizar
Hashmap). El HashMap tendrá de llave el nombre del producto y de valor el precio.
Realizar un menú para lograr todas las acciones previamente mencionadas.

22
EJERCICIOS DE APRENDIZAJE EXTRA
Estos van a ser ejercicios para reforzar los conocimientos previamente vistos. Estos pueden
realizarse cuando hayas terminado la guía y tengas una buena base sobre lo que venimos
trabajando. Además, si ya terminaste la guía y te queda tiempo libre en las mesas, podes
continuar con estos ejercicios extra, recordando siempre que no es necesario que los
termines para continuar con el tema siguiente. Por ultimo, recordá que la prioridad es ayudar
a los compañeros de la mesa y que cuando tengas que ayudar, lo más valioso es que
puedas explicar el ejercicio con la intención de que tu compañero lo comprenda, y no sólo
mostrarlo. ¡Muchas gracias!

1. Diseñar un programa que lea una serie de valores numéricos enteros desde el teclado y
los guarde en un ArrayList de tipo Integer. La lectura de números termina cuando se
introduzca el valor -99. Este valor no se guarda en el ArrayList. A continuación, el
programa mostrará por pantalla el número de valores que se han leído, su suma y su
media (promedio).

2. Crear una clase llamada CantanteFamoso. Esta clase guardará cantantes famosos y
tendrá como atributos el nombre y discoConMasVentas.
Se debe, además, en el main, crear una lista de tipo CantanteFamoso y agregar 5 objetos
de tipo CantanteFamoso a la lista. Luego, se debe mostrar los nombres de cada cantante
y su disco con más ventas por pantalla.
Una vez agregado los 5, en otro bucle, crear un menú que le de la opción al usuario de
agregar un cantante más, mostrar todos los cantantes, eliminar un cantante que el usuario
elija o de salir del programa. Al final se deberá mostrar la lista con todos los cambios

3. Implemente un programa para una Librería haciendo uso de un HashSet para evitar datos
repetidos. Para ello, se debe crear una clase llamada Libro que guarde la información de
cada uno de los libros de una Biblioteca. La clase Libro debe guardar
el título del libro, autor, número de ejemplares y número de ejemplares prestados.
También se creará en el main un HashSet de tipo Libro que guardará todos los libros
creados.
En el main tendremos un bucle que crea un objeto Libro pidiéndole al usuario todos sus
datos y los seteandolos en el Libro. Despues, ese Libro se guarda en el conjunto y se le
pregunta al usuario si quiere crear otro Libro o no.
La clase Librería contendrá además los siguientes métodos:
● Constructor por defecto.

● Constructor con parámetros.

● Métodos Setters/getters

● Método prestamo(): El usuario ingresa el titulo del libro que quiere prestar y se lo busca
en el conjunto. Si está en el conjunto, se llama con ese objeto Libro al método. El
método se incrementa de a uno, como un carrito de compras, el atributo ejemplares
prestados, del libro que ingresó el usuario. Esto sucederá cada vez que se realice un
préstamo del libro. No se podrán prestar libros de los que no queden ejemplares
disponibles para prestar. Devuelve true si se ha podido realizar la operación y false en
caso contrario.

● Método devolucion(): El usuario ingresa el titulo del libro que quiere devolver y se lo
busca en el conjunto. Si está en el conjunto, se llama con ese objeto al método. El
método decrementa de a uno, como un carrito de compras, el atributo ejemplares
prestados, del libro seleccionado por el usuario. Esto sucederá cada vez que se
produzca la devolución de un libro. No se podrán devolver libros donde que no tengan
ejemplares prestados. Devuelve true si se ha podido realizar la operación y false en
caso contrario.

● Método toString para mostrar los datos de los libros.


23
4. Almacena en un HashMap los códigos postales de 10 ciudades a elección de esta
página: https://mapanet.eu/index.htm. Nota: Poner el código postal sin la letra, solo el
número.

• Pedirle al usuario que ingrese 10 códigos postales y sus ciudades.

• Muestra por pantalla los datos introducidos

• Pide un código postal y muestra la ciudad asociada si existe sino avisa al usuario.

• Muestra por pantalla los datos

• Agregar una ciudad con su código postal correspondiente más al HashMap.

• Elimina 3 ciudades existentes dentro del HashMap, que pida el usuario.

• Muestra por pantalla los datos

22

También podría gustarte