Hola y bienvenidos a esta elección.
A continuación vamos a dejar el tema de colecciones genéricas en Java están listos.
Vamos bien abrimos nuestro IDE.
Vamos a cerrar cualquier proyecto que tengamos abierto y derecho Claws y vamos a crear un nuevo proyecto.
Nos siguen Fineo Project Wild Maybe en Java Application el nombre del proyecto se va a llamar colecciones
genéricas
lo depositamos en la carpeta de cursos diagonal inversa Java.
El grupo Heydi va a ser MX con G.M. de Global mentoring.
La versión 1.0 y el nombre del paquete vamos a dejarlo vacío damos sigue en finalizar ahora vamos a
crear una clase de Derecho nio Java class que se va a llamar
colecciones genéricas y el paquete también se llama colecciones genéricas
agregamos un método main y esto va a ser muy similar al tema de colecciones pero a diferencia del tema
de colecciones que hemos visto anteriormente donde los elementos que se almacenaban eran de tipo object.
En este caso ya no vamos a permitir almacenar simplemente tipos Object sino que vamos a especificar
el tipo que debe de almacenar la colección así que vamos a definir una variable utilizando la interfase
de lista.
Y vamos a indicar entre paréntesis que vamos a almacenar únicamente elementos de tipo string así que
en este caso esta lista únicamente va almacenar elementos de tipo string
y posteriormente distanciamos esta lista utilizando la clase concreta Array List importamos estas clases
ponemos punto asterisco en Java punto y útil ya que vamos a utilizar varias clases de este paquete y
podemos observar con esto suficiente del lado izquierdo ya estamos indicando el tipo de dato que va
a almacenar nuestra lista y si tratamos de almacenar elementos que no son de tipo string desde el momento
que mandamos a llamar.
El método ADB podemos observar que en lugar de Objet únicamente nos permite almacenar elementos de tipo
string y podemos observar que el método ADB utiliza el tipo genérico.
Esto es similar como el tipo genérico té que utilizamos anteriormente pero se utiliza para elementos
de una colección.
Por eso no se utilizó té sino la variable.
Sin embargo es una simple nomenclatura así que si tratamos de agregar elementos que no sean de tipo
string por ejemplo como un entero podemos observar que el compilador en automático nos marca un error
y nos manda el mensaje de tipos incompatibles el entero no puede ser convertido a un string de manera
automática así que esa es la ventaja de utilizar colecciones genéricas ya que no podemos almacenar ni
siquiera por error tipos que no corresponden con el tipo que deseamos almacenar.
En este caso únicamente podemos almacenar tipos string
y así podemos agregar cualquier tipo de elementos
almacenados por ejemplo los elementos de Juan Carla y vamos a repetir el valor de Juan para ver qué
es lo que sucede con los elementos repetidos en las listas ya sabemos que permite elementos duplicados
pero simplemente para comprobarlo vamos a crear el método de imprimir el cual recibe una colección que
es el tipo padre de todas las colecciones pero en este caso vamos a indicar que va a almacenar elementos
de tipo string este método va a ser privado de tipo Static
no regresa nada
y aquí corrijo.
Debe ser Collection y ahora vamos a iterar cada uno de los elementos de esta colección a que una de
las ventajas es que debido a que hemos indicado que vamos a almacenar únicamente elementos de tipo string
también cuando recorremos cada uno de los elementos ya no vamos a utilizar obvien sino que podemos utilizar
directamente el tipo que sabemos que está almacenando la colección así que definimos el elemento de
tipo string para almacenar cada uno de los elementos de la colección posteriormente indicamos la colección
que vamos a recorrer y con esto ya estamos listos para iterar cada uno de los elementos
y mandamos simplemente de imprimir el elemento que estamos recorriendo en este momento finalmente imprimimos
un salto de línea y mandamos a llamar.
Este método de imprimir le pasamos la colección genérica que hemos declarado y podemos observar que
este método está recibiendo sin ningún problema la clase de tipo lista de tipo string debido a que también
el tipo de colección la interfase colección estamos indicando que va almacenar elementos de tipo string
guardamos cambios y ejecutamos
y podemos ver que podemos recorrer cada uno de los elementos sin ningún problema y también los elementos
duplicados en este caso como estamos utilizando el tipo list se almacena también sin ningún problema
y se despliega en el orden que hemos agregado cada uno de los elementos.
Esto debido a que es una colección de tipo lista.
Ahora vamos a utilizar nuestra colección de tipo set también vamos a indicar que va a ser del tipo String.
Obviamente aquí podemos definir cualquier otro tipo.
En este caso únicamente vamos a utilizar los tipos de string para que podamos utilizar este método de
imprimir pero podríamos indicar cualquier otro tipo no hay ningún problema.
La variable se llama missed
y utilizamos la clase concreta Jacek para inicializar esta variable missed y empezamos a agregar elementos.
También podemos observar que únicamente puede almacenar elementos de tipo string por ejemplo almacenamos
el valor de 100
el valor de 200 pero si tratamos de almacenar un valor repetido por ejemplo volvemos a agregar el valor
de 200 vamos a ver qué sucede y mandamos a imprimir mi set ponemos entre comentarios la primera llamada
de imprimir guardamos cambios y ejecutamos y podemos ver que en este caso únicamente se están mostrando
dos elementos el valor de 100 y 200 el valor repetido ya no se agrega debido a que estamos utilizando
el tipo set y por último vamos a poner a prueba el tipo Map así que vamos a definir un mapa e indicamos
que las colecciones que va a almacenar internamente van a ser de tipo String.
Tanto la llave como los valores asociados la variable se va a llamar mi mapa y la clase concreta que
vamos a utilizar es Cashman
y vamos a empezar a agregar valores
mi mapa y mandamos a llamar el método put.
Y podemos observar también en este caso que estamos indicando que vamos a almacenar elementos de tipo
string tanto para la llave como para el valor así que no podemos agregar otro tipo de dato debemos utilizar
forzosamente el tipo string así que mandamos a llamar el método put y almacenamos los valores string.
El valor de 1 y posteriormente el valor asociado a esta llave en este caso el valor de Juan
agregamos otro valor.
La llave con valor de 2 y el valor asociado el valor de Carla
agregamos un tercer valor
el cual es Carlos y con eso es suficiente.
Vamos a esperar estos elementos
recordemos que no podemos iterar directamente un mapa sino que debemos seleccionar cuál es el elemento
que queremos iterar ya sea las llaves o los valores así que mandamos a llamar el método imprimir
pero le pasamos únicamente las llaves guardamos cambios y ejecutamos
y podemos llevar gaitera sin ningún problema las llaves y ahora vamos a iterar los valores
mandamos a llamar el método valioso de nuestro mapa guardamos cambios y ejecutamos y podemos observar
que se imprimen también correctamente cada uno de los valores y recordemos que si duplicamos una llave
por ejemplo si repetimos la llave tres con el valor de Rosario entonces realmente lo que va a hacer
es sobreescribir la llave en primer lugar tenemos el valor de Carlos pero como se vuelve a proporcionar
un nuevo valor en este caso el último valor proporcionado es el valor de Rosario.
Vamos a comprobar guardamos cambios y ejecutamos y podemos ver que únicamente tenemos tres elementos
y el elemento 3 con la Llave 3 imprime el valor de Rosario.
Si queremos imprimir de manera independiente este valor podemos hacer lo siguiente utilizando el mapa
mandamos a llamar el método GET y en este caso si estamos indicando un tipo obvie proporcionamos el
valor la llave que queremos recuperar.
En este caso la Llave 3 y vamos a ver el valor que nos imprime guardamos cambios y ejecutamos y podemos
observar el valor de Rosario bien así que con eso estamos probando correctamente nuestros tipos genéricos
utilizando colecciones genéricas así que con este ejercicio hemos puesto en práctica el concepto de
colecciones genéricas las cuales se crearon para que podamos indicar al compilador el tipo de dato que
vamos a almacenar y de esta manera no haya errores posteriormente por agregar objetos o tipos que no
pertenecen al tipo de la colección genérica que vamos a utilizar.
Con esto ya no hay posibilidad de error únicamente podemos almacenar el tipo que estamos indicando en
la colección genérica.
De esta manera evitamos errores y también evitamos hacer conversiones al momento de obtener los elementos
de nuestra colección.
Eso es todo por selección y nos vemos en el siguiente vídeo.
Saludos.