20250210 Colecciones_Map - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
Venga, a ver, nos quedan de colecciones dos cositas y luego, por supuesto, toda la práctica
00:00:00
la que permite ya verdaderamente conocer esto y manejarlo con soltura, ¿vale?
00:00:09
Entonces, silencio, William, estás todo el rato preguntando cosas que ya hemos visto.
00:00:13
Sí, sí, estoy explicando, estoy explicando.
00:00:24
estaba hablando yo ya estaba aplicando de hecho he dicho la frase hasta ahora hemos visto y tú
00:00:30
estabas hablando eso ya era explicación vale bueno vale pues entonces que hemos visto de
00:00:36
colecciones hemos visto que efectivamente son cajas para guardar cosas a mogollón vale
00:00:45
objetos siempre objetos nunca datos primitivos si yo quiero en una colección guardar numeritos
00:00:51
enteros, no puedo
00:00:58
guardar
00:01:00
no puedo hacer una lista de esto
00:01:01
¿vale?
00:01:04
de esto no puedo, recordad
00:01:06
porque los
00:01:08
tipos genéricos solo
00:01:10
pueden ser sustituidos
00:01:12
por tipos objeto
00:01:14
no por tipos primitivos
00:01:15
¿eso es un problema? no, si yo quiero hacer
00:01:17
una lista de números enteros
00:01:20
pues entonces pongo
00:01:22
el graper, el envolvente
00:01:23
y ya está, que lo hay para la abel y para
00:01:26
¿vale? bueno
00:01:28
no, a mí no me encanta, a mí me deprime
00:01:29
pues a ver
00:01:38
a ver, repetirlo no puedo
00:01:42
no puedo
00:01:50
a ver, está en una grabación
00:01:52
además está etiquetado
00:01:54
porque trato de etiquetar las grabaciones
00:01:56
poniendo lo que cuento y hay una etiquetada
00:01:58
precisamente con tipos genéricos.
00:01:59
¿Vale? Lo más que te puedo decir es lo
00:02:01
imprescindible que necesitas para entender
00:02:03
lo que estoy diciendo. Pero eso no te lo haré
00:02:05
para esa. Así que más vale que te lo estudies
00:02:08
y te lo mires. ¿Vale?
00:02:09
Bueno.
00:02:11
Entonces, cuando
00:02:14
hacemos colecciones de cualquier tipo,
00:02:15
podemos crearlas así,
00:02:20
sin especificar el tipo,
00:02:21
con lo cual en esta lista
00:02:23
uno puede meter
00:02:25
el objeto, el tipo de objeto
00:02:28
que le dé la gana, un objeto coche
00:02:30
un objeto alumno, un objeto casa
00:02:32
lo que le dé la gana, porque la lista
00:02:34
está en modo genérico
00:02:36
no tiene particularizado
00:02:38
qué tipo de dato va a ir en ella
00:02:39
ese no es el uso más
00:02:41
recomendable, porque entonces
00:02:44
en esta caja caen mezclados
00:02:46
coches, casas, perros y gatos
00:02:47
si luego yo me pongo a sacar
00:02:50
de la caja y digo, uh, un perro
00:02:52
uy un gato, pues tengo que tratarlos de forma individualizada
00:02:53
no es desde luego la mejor estrategia para hacer un software
00:02:58
luego el uso recomendable de las colecciones es
00:03:02
concretar el tipo de dato que va a caer en la caja
00:03:05
para que todos los datos sean de ese tipo
00:03:11
entonces eso se concreta como se concreta en las clases genéricas
00:03:14
que el list es una clase genérica
00:03:18
poniendo entre corchetes
00:03:20
el tipo de dato que va a caer ahí
00:03:22
¿que son integer?
00:03:24
pues integer, entonces ahora ya en esta lista
00:03:26
solo podrán ir numeritos
00:03:28
¿que yo pongo ahí list alumno?
00:03:30
pues en esa lista solo podrán ir
00:03:32
solo podrán ir alumnos
00:03:34
eso facilita las iteraciones
00:03:35
porque todo lo que salga en la posición 0, 1, 2, 3
00:03:38
todo va a ser del mismo tipo
00:03:40
no hay que hacer casting
00:03:42
que siempre dan errores
00:03:44
o casi siempre etc
00:03:46
bueno pues entonces
00:03:47
de colecciones
00:03:49
vimos que había dos tipos
00:03:53
listas y conjuntos
00:03:56
¿verdad?
00:03:58
la interfaz list
00:04:01
con dos implementaciones
00:04:02
array list
00:04:05
y linked list
00:04:13
que se usan
00:04:17
en realidad igual, sirven para
00:04:21
meter, recorrer, sacar
00:04:22
por posición, borrar
00:04:24
con remove, para lo mismo ¿vale?
00:04:26
pero sabemos que se diferencian en cómo están hechas por dentro
00:04:28
¿verdad? esta por dentro es una array
00:04:31
y esta por dentro es una lista enlazada
00:04:33
¿y alguien
00:04:34
podría recordarme
00:04:36
alguna tradiferencia
00:04:39
en realidad
00:04:41
que ofrece esta implementación respecto
00:04:43
a esta?
00:04:45
que en array list es más fácil
00:04:46
ver el contenido
00:04:48
¿cómo más fácil?
00:04:50
a efectos de usarla
00:04:53
¿hay alguna diferencia?
00:04:55
a ver, es una pregunta un poco
00:04:55
abstracta, pero por si acaso alguien
00:04:59
se acuerda
00:05:00
no, a ver, los dos empiezan vacío
00:05:01
el ArrayList inicialmente empieza
00:05:13
con su Array interno vacío
00:05:14
o sea, las dos son dinámicas
00:05:16
las dos son dinámicas, ahí no hay diferencia
00:05:20
las dos empiezan con una caja de tamaño 0
00:05:22
según yo voy metiendo, se agranda
00:05:25
para lo que tiene que albergar
00:05:27
las dos son dinámicas y en eso no hay diferencia
00:05:28
la única diferencia es que en el ArrayList
00:05:30
lo que se agranda es un Array
00:05:32
y en la LinkedList lo que se agranda es una lista enlazada
00:05:34
que va cogiendo referencias
00:05:37
ahí no hay diferencia
00:05:38
entonces
00:05:39
la única diferencia
00:05:40
a efectos del usuario que lo ve
00:05:43
era que LinkedList te ofrecía
00:05:47
métodos para simular
00:05:49
los funcionamientos de pilas y colas
00:05:51
el push, el pull, todo eso
00:05:52
entonces la linked list te ofrece esos métodos
00:05:54
para simular ese comportamiento
00:05:57
¿vale? que ArrayList no te ofrece
00:05:58
esos métodos, entonces si uno quiere una pila
00:06:01
por ejemplo, porque le viene muy bien
00:06:03
tener una pila, porque los datos
00:06:05
los va a guardar siempre apilados
00:06:07
y los va a sacar siempre de la cima
00:06:09
si uno quiere una pila
00:06:11
pues instancia en la linked list, usa
00:06:13
push y pop y ya está
00:06:15
¿vale? usa push y pop y ya está
00:06:17
pues por ejemplo, esa puede ser
00:06:19
una diferencia
00:06:20
¿vale?
00:06:22
conjuntos
00:06:24
de los conjuntos
00:06:26
hay tres implementaciones
00:06:30
de los cuales
00:06:31
vimos dos
00:06:32
que son
00:06:35
prácticamente iguales
00:06:40
de HACET explicamos
00:06:42
cómo se almacenaba por dentro
00:06:44
que era una función de HACET
00:06:45
hicimos en el ejercicio que está grabado
00:06:46
que os grabé el jueves enterito
00:06:50
está todo explicado
00:06:52
el jueves os grabé un ejercicio entero muy largo
00:06:53
donde está todo explicado
00:06:56
¿vale? sí, qué guay
00:06:59
el qué guay lo voy a decir yo cuando me ponga a poner cero
00:07:00
uno tras otro, cero, cero, uno, cero
00:07:02
ahí sí que ya
00:07:05
qué guay
00:07:06
no, no, no
00:07:07
¿para qué te vas a poner un cero?
00:07:10
al lado de mi uno
00:07:13
un diez, yo no pillo
00:07:14
sí, lo he pillado, pero no
00:07:16
cero con uno
00:07:18
pero ahí sí que me voy a reír yo
00:07:20
un montón, fíjate cuando empieza
00:07:23
a ponernos las notas
00:07:25
no, a ver, lo que quiero es que espabiléis
00:07:26
que si os grabo el jueves
00:07:31
un ejercicio enterito, aquí sola
00:07:33
abrandonada, pues que lo veáis
00:07:35
porque no lo quiero repetir
00:07:37
sí
00:07:38
no, si no pasa nada
00:07:39
mejor sola
00:07:43
a mí
00:07:44
a ver, os lo avisé
00:07:47
que lo iba a subir
00:07:53
y lo explica
00:07:55
todo.
00:07:57
Bueno,
00:08:01
mirad en su media
00:08:02
Bueno,
00:08:06
pues,
00:08:11
todos los detalles,
00:08:14
todos los detalles ya del uso
00:08:17
de esto, están en ese ejercicio
00:08:19
que subí y están ahí,
00:08:22
¿vale? Están todos ahí.
00:08:23
Nos queda una implementación
00:08:25
Nos queda una implementación
00:08:31
Que no hemos visto, que es triset
00:08:34
Esto es muy sencillito
00:08:36
Ya la vemos mañana
00:08:37
Porque hoy es
00:08:39
¿Vale?
00:08:40
Pero se usa igual que las otras
00:08:42
Es que no dejan de ser conjuntos
00:08:47
Que son cajas para meter cosas
00:08:49
Diferencia entre list y set
00:08:51
No la sabemos ya de memoria
00:08:54
que en las listas tú metes en una posición
00:08:55
y en los conjuntos
00:08:58
no metes en una posición.
00:09:00
¿Y en los conjuntos no puede haber datos repetidos?
00:09:01
Claro, eso implica que en los conjuntos
00:09:03
no puede haber datos repetidos según
00:09:05
el criterio de Haskell de Equals.
00:09:07
Porque el criterio de igualdad
00:09:10
es Haskell de Equals en secuencia,
00:09:12
uno tras otro.
00:09:13
Entonces, ¿cómo iteramos en una lista?
00:09:15
En una lista podemos iterar
00:09:18
con el forEach de toda la vida
00:09:19
o también con un for de índice,
00:09:21
porque tenemos el método getI.
00:09:23
desde i igual a cero, me diréis a menor que get i
00:09:24
get i, vas sacando por posición
00:09:26
claro, con el set
00:09:28
no puedes iterar con un for de índice
00:09:30
porque no hay posiciones, iteras con un for each
00:09:32
y se acabó, entonces si quieres
00:09:34
encontrar un elemento en tu caja
00:09:36
como están todos a mogollón
00:09:38
en el set, que ese es su problema
00:09:39
tienes que ir sacándolos uno tras otro
00:09:41
¿es este el que quiero? no
00:09:44
¿es este el que quiero? no
00:09:45
y así los vas sacando, luego localizar
00:09:47
un elemento dentro de un conjunto
00:09:50
dentro de un set
00:09:52
implica siempre
00:09:53
iterar, tú los has metido
00:09:55
todos muy bien, muy cómodo, me he metido
00:09:57
por ejemplo, tenemos alumnos
00:09:59
su clave es su DNI, pues tú lo metes
00:10:00
ahí, vale, y ahora
00:10:03
quieres ver
00:10:05
qué nota ha sacado el alumno de DNI tal
00:10:06
pues tienes que ir
00:10:09
iterando, este es el DNI
00:10:11
que quiero, no, siguiente, ese es el DNI
00:10:13
que quiero, no, siguiente, ese es el DNI que quiero, no
00:10:15
siguiente, es un rollo
00:10:17
es un rollo, porque cualquier consulta
00:10:19
por clave primaria, cualquier consulta
00:10:21
implica que vayas uno por uno
00:10:23
¿vale?
00:10:25
bueno pues
00:10:28
eso
00:10:29
hay una estructura
00:10:31
que es la estructura
00:10:33
MAP
00:10:35
que trata de
00:10:36
facilitarnos esa situación
00:10:39
que es, venga voy a meter yo
00:10:41
todos mis datos en una caja mogollón
00:10:43
pero hombre voy a asociar a cada uno
00:10:45
de ellos una clave
00:10:47
que en el caso del alumno pues
00:10:49
podría ser su DNI, en el caso de un pedido
00:10:51
podría ser su código
00:10:53
voy a asociar a cada elemento que meto en la caja
00:10:54
una clave y me quedo
00:10:57
aquí todas, y tengo aquí
00:10:59
todas las claves recogiditas
00:11:01
y cuando yo quiero sacar un elemento
00:11:02
lo puedo sacar por la clave, le digo
00:11:05
oye Mag, dame el elemento
00:11:07
de clave tal
00:11:09
y él te da el de clave tal, ya está
00:11:10
no tienes que iterar tú a mano
00:11:13
irte metiendo hasta que encuentres el de la clave
00:11:14
esta estructura
00:11:17
incorpora unos
00:11:19
mecanismos
00:11:21
para que tú te limites a decirla
00:11:22
a la estructura
00:11:25
recupérame el de clave tal y el de la da
00:11:27
y ya está, ¿vale?
00:11:29
ese es el fundamento
00:11:31
la razón de que exista esta estructura de datos
00:11:33
el map, ¿vale?
00:11:35
que la llamamos colección
00:11:38
porque sirve también para meter datos a mogollón
00:11:40
luego por eso la llamamos colección
00:11:42
pero en realidad en la jerarquía
00:11:43
no hereda de colección
00:11:45
list y set
00:11:47
Si heredan de collection, pero esta no.
00:11:49
Esta es una interfaz map aparte.
00:11:51
Una interfaz map aparte que no le da de collection.
00:11:53
¿Por qué no le da de collection?
00:11:56
Porque sus métodos son muy distintos.
00:11:57
Porque el map trabaja con pares.
00:11:59
Clave, valor.
00:12:02
Clave, valor. Trabaja con pares.
00:12:03
Luego, añadir, recuperar.
00:12:06
Se hace con métodos muy distintos en su cabecera.
00:12:08
Entonces, meterlo en la interfaz de collection sería un rollo
00:12:11
porque la cabecera de los métodos no se adapta.
00:12:13
Por eso se hace una interfaz aparte.
00:12:16
La interfaz map, un segundo, y esta interfaz map que tiene ya los métodos, ahora los veremos, para meter un par, para sacarlo, para modificarlo, esa interfaz que tiene ya esos métodos, tiene tres implementaciones, que son el hash map, el linked hash map y el trimap.
00:12:17
como veis
00:12:44
iguales que estas
00:12:46
no casual
00:12:48
iguales que estas pero son map
00:12:49
en vez de set
00:12:52
dime
00:12:53
el map es lo mismo
00:12:54
que una array list pero
00:12:58
tú puedes personalizar el list
00:12:59
a ver no en todo caso sería
00:13:01
lo mismo que un set
00:13:04
en el map no hay orden
00:13:05
eso para empezar con lo cual no es una lista
00:13:07
el map es una caja sin orden
00:13:09
entonces el map es como si fuera
00:13:11
un conjunto normal
00:13:13
un set, pero al que cada elemento
00:13:15
que hay en el conjunto le has asociado
00:13:17
una clave
00:13:19
podría poner 1, 2, 3, 4
00:13:20
la que tú quieras
00:13:23
en el momento de meter
00:13:25
en el momento de meter en la caja
00:13:27
decides a qué clave lo asocias
00:13:29
ahora lo vemos
00:13:31
entonces cuando tú metes en un set
00:13:32
por ejemplo, metes el alumno tal cual
00:13:35
mete alumno, y ahí se ha quedado el alumno
00:13:37
cuando tú metes en un map
00:13:38
di, mete alumno con clave
00:13:40
1, por ejemplo.
00:13:42
Mete ahora otro alumno
00:13:45
con clave 2.
00:13:46
Por eso los métodos son distintos en su cabecera
00:13:48
y por eso Map no hereda de Collection
00:13:50
porque no existe Lab, tal cual.
00:13:52
Porque meter en la caja
00:13:55
implica, mete el objeto
00:13:56
y mételo con esta clave.
00:13:58
Entonces, ¿qué te permite
00:14:01
a la hora de meter en la caja que tú metas con una clave?
00:14:02
Pues que la
00:14:05
colección esta tiene ya un registro
00:14:06
de claves y luego tú le puedes decir
00:14:08
sácame el de clave 1
00:14:10
y ya está
00:14:11
y él como tiene una tabla en la que asocia clave
00:14:13
con elemento de la cajita
00:14:16
pues dice, sácame el de clave 1
00:14:17
pues ya, te da el de clave 1 directamente
00:14:19
en un set tú has metido los objetos así tal cual
00:14:21
entonces a la hora de sacarlos
00:14:25
no te queda más remedio
00:14:27
que irte tú al set
00:14:29
e irlos sacando uno por uno
00:14:30
hasta que encuentras el que quieras
00:14:32
pero esta colección al llevar
00:14:33
una tablita de claves
00:14:35
asociadas a cada uno de los objetos
00:14:37
esa asociación sí
00:14:40
no sería igual
00:14:42
que declarar los objetos por individual
00:14:44
y luego meterlos en el set
00:14:46
porque los tienes ya con un nombre
00:14:47
sí, pero una vez que están en el set
00:14:48
¿cómo los recuperas?
00:14:53
tienes que iterar, sí o sí
00:14:54
claro, incluso en el propio list
00:14:56
solo puedes recuperar o por posición
00:15:00
o iterando, pero al menos por posición
00:15:01
podrías, pero no puedes
00:15:04
por valor, por un valor concreto no puedes
00:15:06
y este te permite recuperar
00:15:08
por una clave que tú hayas asociado
00:15:10
¿vale? es lo que te aporta
00:15:12
entonces es más cómodo
00:15:13
¿vale? entonces es una estructura
00:15:15
¿para eso usar un list no?
00:15:16
no, porque es que en un list no puedes recuperar por valor
00:15:20
solo puedes recuperar por posición
00:15:22
pero tú no sabes en qué posición
00:15:23
está el que tú quieres, o sea, tú metes alumnos
00:15:25
en una lista, o sea, tú sabes que una lista
00:15:28
pero es que igual no nos has metido tú
00:15:30
claro, o sea, que tú puedes tener una lista de alumnos
00:15:33
que te ha llegado de no sé dónde y en la lista
00:15:36
están los alumnos
00:15:37
Y tú quieres el de DNI 37
00:15:38
Pues en la lista no te queda más remedio
00:15:40
Que recorrer el DNI 37
00:15:43
Si te hubiera dado en un map
00:15:44
Tú le dices al map, sácame el de 37
00:15:45
Y ya está, y él te lo saca
00:15:48
Si existe, si no te da ahí anul, claro
00:15:50
Es que no siempre has construido tú la estructura
00:15:52
No has metido tú los datos
00:15:55
Entonces no sabes en qué orden estás
00:15:57
No puedes llevar un registro
00:15:58
Pero es lo mismo que llevar un registro
00:15:59
Sí, pero es que a veces tú no puedes llevarlo
00:16:01
Porque muchos métodos, servicios web
00:16:05
Lo que sea, parten de que ahí te lleva
00:16:07
una caja con cosas
00:16:08
entonces claro
00:16:09
tienes que iterar
00:16:11
el valor que le das al map es un valor con sentido
00:16:13
respecto a un objeto
00:16:16
al final no le das un valor a la tab
00:16:17
claro, o sea se supone que es una clave
00:16:20
primaria que tiene sentido, un DNI
00:16:22
claro
00:16:24
porque el que luego va a recuperar
00:16:25
tiene que saber esa clave que significa
00:16:28
claro, tiene que saber que significa
00:16:30
vale, pues esta es la idea
00:16:32
lo que hay después, bueno pues esto
00:16:34
¿cómo se usa?
00:16:36
Pues lanzamos
00:16:38
Nuestro eclipse
00:16:47
Vale, pues venga
00:16:48
Efectivamente
00:17:17
Es para animarte el día
00:17:21
¿Quién falta el jueves?
00:17:29
¿Y la caja negra?
00:17:36
¿Las pruebas de caja negra tocaban el jueves?
00:17:38
No hemos visto la primera clase y de eso es el examen.
00:17:41
¿Sí?
00:17:44
¿De dónde es el examen?
00:17:45
No, a mí es alguien...
00:17:46
Venga.
00:17:51
¿Qué le dijo a la tía Rosa que no iba a Venezuela?
00:17:55
¡Qué milagro!
00:17:58
Tu pregunta es...
00:17:59
- Materias:
- Programación
- Niveles educativos:
- ▼ Mostrar / ocultar niveles
- Formación Profesional
- Ciclo formativo de grado superior
- Primer Curso
- Subido por:
- Raquel G.
- Licencia:
- Todos los derechos reservados
- Visualizaciones:
- 11
- Fecha:
- 11 de febrero de 2025 - 16:59
- Visibilidad:
- Clave
- Centro:
- IES ROSA CHACEL
- Duración:
- 18′ 06″
- Relación de aspecto:
- 1.78:1
- Resolución:
- 1920x1080 píxeles
- Tamaño:
- 393.59 MBytes