Saltar navegación

20250210 Colecciones_Map - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 11 de febrero de 2025 por Raquel G.

11 visualizaciones

Descargar la transcripción

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
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

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid