Saltar navegación

20260304 Map_2 - 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 9 de marzo de 2026 por Raquel G.

3 visualizaciones

Descargar la transcripción

El map, ya sabemos lo que es, es una estructura de almacenamiento de datos donde cada dato es un par. 00:00:02
Cada dato ahora tiene dos partes, ¿vale? Luego un map es un almacén de pares. 00:00:10
Esas partes del par, uno es la clave y otro es el valor, así es como se llaman, ¿vale? Se llaman clave y valor. 00:00:17
¿Qué significan? Pues la clave se supone que se usa para identificar de forma única 00:00:24
los verdaderos datos, que son los que están en los valores 00:00:32
Luego los datos están en los valores, tienen cada uno de ellos un identificador único 00:00:35
y ese identificador único en vez de guardarse dentro del propio valor, que puede guardarse dentro 00:00:42
Pues además se saca fuera y se mete en la clave 00:00:47
Luego el par está compuesto por esa clave 00:00:52
Que identifica de forma única 00:00:55
Y ya el dato en sí 00:00:56
Puede tener dentro lo que sea 00:00:58
Incluida la propia clave 00:01:00
No pasa nada, incluida la propia clave 00:01:02
Para que así esté más completo 00:01:05
El conjunto de datos 00:01:06
Estará más completo porque está todavía recogidito 00:01:08
Pero para facilitar 00:01:11
Luego ya la gestión, el recorrido 00:01:13
Y todo eso del map 00:01:15
Esa clave está puesta fuera 00:01:16
Además 00:01:18
en el par 00:01:19
en el par del mal, vale, pues entonces 00:01:23
vimos como se declaraba 00:01:25
pues en este ejemplito 00:01:27
esta es la interfaz que tiene varias implementaciones 00:01:28
esta es una 00:01:32
interpretación, pues la más 00:01:33
habitual 00:01:36
vale, entonces en esta implementación 00:01:36
lo que dijimos ayer es 00:01:40
que las claves 00:01:42
se guardan en un hash set 00:01:43
entonces, eso que 00:01:45
implica? Bueno, pues que nosotros 00:01:47
ya entonces tenemos conocimiento 00:01:49
de que el map por dentro, cuando 00:01:51
tenga que insertar, recuperar, hacer cosas, 00:01:53
pues trabajará con un haset de claves. 00:01:55
Y como nosotros sabemos 00:01:58
que para que Java pueda 00:01:59
trabajar correctamente con un haset, 00:02:01
la clase 00:02:04
a la que pertenecen los elementos de ese 00:02:05
haset tiene que tener hasco de equals, 00:02:07
porque si no, 00:02:10
no va a comprobar correctamente su igualdad 00:02:11
y eso es básico para poder trabajar 00:02:14
con ese haset, pues como sabemos 00:02:15
que todo lo que 00:02:18
esté en un haset 00:02:20
tiene que tener jasco de equals 00:02:22
pues la clase a la que pertenecen las claves 00:02:23
tenemos que asegurarnos de que 00:02:26
tenga jasco de equals, ya está, es lo único 00:02:28
que implica el haber decidido 00:02:30
un hasmat como estructura 00:02:32
para nuestro mac 00:02:34
asegurarnos que esta clase de aquí 00:02:35
tenga jasco de equals, en este ejemplito 00:02:38
primero como string tiene jasco de equals 00:02:40
pues ya está, no pasa nada 00:02:42
Entonces, ¿qué vimos? Pues como 00:02:44
Insertar pares 00:02:47
Como insertar pares, put 00:02:49
¿Vale? Porque las colecciones 00:02:51
Son para eso, para meter cosas 00:02:53
Sacarlas, ver lo que hay 00:02:55
Que ese es el recorrido o la consulta 00:02:57
Y eliminarlas 00:02:59
¿Vale? Recordad que esas son las cuatro 00:03:00
Acciones básicas que se pueden hacer 00:03:03
Con los datos 00:03:05
Con cualquier almacén de datos 00:03:06
Me da igual que sea una base de datos 00:03:09
Una colección que tengo yo en memoria 00:03:10
en mi aplicación, con cualquier 00:03:13
almacén de datos, esas son las únicas cuatro 00:03:15
cosas que puedo hacer 00:03:17
insertar 00:03:18
consultar 00:03:21
actualizar 00:03:25
y borrar 00:03:28
esas son las cuatro acciones 00:03:32
que yo puedo hacer con cualquiera 00:03:35
que tengo que poder hacer con cualquier almacén de datos 00:03:37
y no necesito hacer ninguna otra 00:03:39
ahora ya cualquier otra acción más compleja 00:03:40
es una composición de cualquiera 00:03:43
de ellas y ya está 00:03:45
¿Vale? Bueno, pues 00:03:46
Insertar en un map 00:03:48
Pues esto 00:03:50
¿Vale? Insertar en un map 00:03:52
Entonces, este put ya sabemos que 00:03:55
Si la clave no existe 00:03:56
Inserta 00:03:59
Pero si la clave existiera 00:03:59
Se comporta como una 00:04:03
Actualización, ¿vale? 00:04:05
Si la clave existiera, se comporta como una 00:04:07
Actualización 00:04:10
¿Qué más métodos vimos del map? 00:04:11
Recuperar 00:04:17
recuperar por clave 00:04:18
¿no? 00:04:22
claro 00:04:24
perdón 00:04:25
vale 00:04:26
pues este 00:04:28
recuperar por clave 00:04:29
entonces me devuelve 00:04:30
el valor 00:04:34
el objeto 00:04:35
asociado a esta clave 00:04:37
si es que existe 00:04:39
si no existe 00:04:41
me devuelve un nul 00:04:42
y se acabó 00:04:43
me devolverá nul 00:04:44
¿vale? 00:04:45
entonces en este caso 00:04:47
en este ejemplito 00:04:48
pues 00:04:49
este era el alumno 00:04:50
asociado a esta clave 00:04:52
que yo lo cojo directamente 00:04:54
con un icoget y esa era la ventaja 00:04:56
del map 00:04:58
que 00:04:59
es la que aporta respecto a la lista 00:05:00
que yo quiero el alumno con un DNI 00:05:04
siendo el DNI la clave 00:05:06
me hago el get y ya está 00:05:08
que esos alumnos están todos en una lista 00:05:09
y necesito el alumno 00:05:12
con ese DNI 00:05:14
pues me tengo que meter en la lista 00:05:15
recorrerla hasta que encuentro el alumno 00:05:18
con ese DNI 00:05:20
Entonces esto es 00:05:21
Un acceso mucho más rápido 00:05:23
Porque es directamente por la clave 00:05:24
Gracias a que la he sacado fuera 00:05:26
¿Vale? 00:05:28
Bueno 00:05:30
Eliminar 00:05:31
Pues eliminar 00:05:35
Pues tendrá algún método para eliminar 00:05:40
Lógicamente 00:05:43
Vamos a ver que métodos tiene 00:05:44
Map 00:05:46
Para echarles un vistazo 00:05:47
A ver como es el de eliminar 00:05:54
¿Vale? 00:05:55
Pues map tiene 00:05:57
Antes de que encontremos el de eliminar 00:05:58
Pues fijaos, este clear tiene toda la pinta 00:06:01
Por nombre 00:06:04
Que limpia el map 00:06:05
Lo deja vacío, borra todos los elementos 00:06:07
Tiene pinta, ¿verdad? 00:06:10
Es lo que dice aquí 00:06:11
Borra todos los pares de este map 00:06:12
El map estará vacío 00:06:16
Que no null 00:06:18
¿Vale? El map se queda vacío 00:06:19
Vale 00:06:22
Entonces, bueno, aquí tiene 00:06:24
más métodos, vamos a buscar el de 00:06:25
borrar por clave 00:06:27
porque este es el que borra a todos 00:06:29
vale, pues si borra 00:06:31
buscamos a ver como es el de, pues no, tiene toda la pinta 00:06:33
de que es este 00:06:35
¿vale? veis es un método 00:06:36
sobrecargado, tiene dos versiones 00:06:41
borrar por clave 00:06:43
este, el más sencillo 00:06:45
borrar por clave 00:06:47
borra el par 00:06:48
borra el par de correspondiente 00:06:50
a esta clave, si esta clave está 00:06:53
¿vale? 00:06:55
Y si no está, pues no puede hacer nada, lógicamente. 00:06:57
¿Y qué te devuelve? 00:07:01
Te devuelve el objeto borrado. 00:07:03
Te lo devuelve, además. 00:07:07
Tú lo puedes tirar a la basura o quedártelo para hacer algo. 00:07:08
O sea, lo elimina del map y te lo da como valor de retorno. 00:07:11
Pues yo qué sé, por si quieres hacer algo con él. 00:07:15
Es como si fuera en la pila el pop que saca de la pila. 00:07:17
Pero en este caso no sacas de la cima, sino que sacas por clave. 00:07:20
si no existiera 00:07:25
te devuelve un null 00:07:27
eso que significa 00:07:28
que este objeto 00:07:31
nos vale para verificar 00:07:33
si realmente se ha borrado 00:07:36
un elemento o no se ha borrado 00:07:38
si esto me devuelve null, no he hecho ningún 00:07:39
borrado porque no existía 00:07:42
si esto me devuelve diferente de null 00:07:43
pues si, he hecho un borrado 00:07:46
y además el objeto que he eliminado es 00:07:47
este, el valor que he eliminado es ese 00:07:50
no, no te muestra nada 00:07:52
te lo devuelve con valor de retorno 00:07:56
tú si lo recoges 00:07:58
luego ya haces con él lo que quieras si quieres hacer algo 00:07:59
si quieres hacer algo 00:08:02
borrado ya se queda, es lo que se supone que para que 00:08:03
llamamos a esto 00:08:06
tiene otra variante aquí 00:08:06
remove 00:08:10
que esta 00:08:10
te borra el elemento con esta clave 00:08:12
pero solo si coincide con 00:08:15
este valor, o sea es un 00:08:18
remove un poco más extraño 00:08:20
normalmente nosotros cuando queremos 00:08:21
eliminar, queremos eliminar por clave y ya está 00:08:24
Pero bueno, tiene esta otra versión 00:08:26
El remove 00:08:28
Que esto es lo que dice que hace 00:08:29
Te borra el elemento con esta clave 00:08:32
Pero solo te lo borra si es 00:08:34
Igual 00:08:36
A este 00:08:37
Igual ya sabéis que significa 00:08:39
Que la llamada al método equals de este objeto 00:08:41
Pues te de 00:08:44
Esto es lo que dice que hace 00:08:45
Pero bueno, es otra versión de remove 00:08:47
Pues yo que sé 00:08:49
Si realmente lo encontró 00:08:50
Y por tanto lo borró, te devuelve true 00:08:54
Y si no, falso. 00:08:55
Entonces, eliminar sería eso, ¿verdad? 00:08:59
Luego que nosotros queremos eliminar por clave, pues nada, esto nos eliminaría, lógicamente, nos eliminaría el alumno con esta clave. 00:09:08
Si yo quiero verificar si realmente lo he eliminado yo, lo he eliminado o no, pues podría hacer esto. 00:09:26
por ejemplo 00:09:32
si es diferente de null 00:09:33
pues entonces 00:09:37
alumno eliminado 00:09:38
vale, por ejemplo 00:09:43
así podría hacer un borrado 00:09:47
por clave y además 00:09:49
confirmar si se ha borrado 00:09:51
algo o no, porque si esta clave 00:09:53
no existiera pues no se ha borrado nada 00:09:55
yo le doy al remove, confío en que se ha borrado 00:09:57
pero no se ha borrado porque no existe 00:09:59
entonces si yo quiero una realimentación 00:10:01
quiero 00:10:03
no, el true o false da cuando 00:10:04
la otra versión de remove 00:10:08
este te devuelve el objeto borrado 00:10:09
yo aquí, el objeto borrado 00:10:11
no me ha interesado cogerlo, pero si me ha interesado 00:10:14
verificar que sea diferente de null 00:10:16
solo eso, para 00:10:18
dar una información sobre el ya borrado 00:10:19
es que no devuelve 00:10:22
este devuelve el objeto borrado 00:10:29
pero con la exclamación 00:10:31
¿dónde? 00:10:34
no, la exclamación 00:10:34
solo la puedo poner 00:10:37
hombre 00:10:40
a ver, si 00:10:45
la JDK25 00:10:47
permite que tú niegues algo 00:10:49
que no sea boolean, espero que yo sepa 00:10:51
no, pero 00:10:53
no es necesario 00:10:57
vamos, si es mucho más sencillo así 00:10:59
a ver, quítate de la cabeza Python 00:11:01
sí, pero hablo en general 00:11:05
hablo en general porque 00:11:07
Python juega usted también, lo que pasa es que bueno 00:11:09
que C tiene la solera 00:11:12
así hay que respetarle 00:11:14
pero es verdad que Python en general 00:11:15
tiene 00:11:18
atajos para todo, facilidades 00:11:19
para todo, todo y bueno, vale 00:11:22
sí, eso en algunos contextos 00:11:24
está bien, pero 00:11:26
pero claro, Java es otro rollo 00:11:27
aunque claro 00:11:30
en cada versión que se hace de Java 00:11:31
incorpora 3 o 4 chorraditas 00:11:34
cada versión, hay algunas versiones 00:11:36
que han sido las de toma 00:11:38
menos mal que llegó porque lo ha cambiado todo 00:11:39
Java 8 que incorporó toda la programación funcional 00:11:41
luego no sé cuál 00:11:44
Java 10 creo que fue módulo 00:11:46
y luego al margen de las versiones 00:11:47
que llegan y dicen toma 00:11:50
que guay que ha incorporado todo esto 00:11:51
luego cada versión pues incorpora chorraditas 00:11:53
porque es normal, tienen que justificar su sueldo 00:11:56
lógicamente 00:11:58
entonces algunas de estas chorraditas 00:11:59
pues van un poco en el sentido 00:12:02
de hacer atajos, hacer pues como 00:12:03
el main, acortar, pero cosas de esas 00:12:05
¿vale? entonces 00:12:07
lo que pasa es que 00:12:09
uy, nulo 00:12:13
este atajo en particular 00:12:14
se me haría a mí un poco feo 00:12:17
no sé, que podría llegar contra la 00:12:20
filosofía un poquito de 00:12:22
lenguajes tipados 00:12:24
¿vale? el lenguaje es no, aunque C es tipado 00:12:25
también, lenguajes no tipados, pues sí tiene 00:12:27
sentido, pero en tipados, no sé, negar 00:12:29
un valor que no sea boolean, es raro 00:12:32
vale 00:12:34
bueno, pues entonces 00:12:36
ya está, eliminar 00:12:37
entonces, ¿qué más cosas hemos dicho 00:12:44
que tenía el CRUD? 00:12:46
no hemos recorrido todavía para hacer consultas 00:12:48
pues, actualizar 00:12:50
actualizar 00:12:52
hemos dicho que el PUT nos vale 00:12:54
para actualizar 00:12:56
el PUT nos vale 00:12:57
pero cuidado porque el put no es una actualización solo 00:13:04
es actualización o inserción 00:13:07
entonces puede ser 00:13:09
que yo necesite actualizar un dato 00:13:13
si ese dato existe y si no existe 00:13:16
pues no insertarlo de nuevas, solamente actualizar si existe 00:13:18
entonces para eso el put no me valdría 00:13:22
porque si yo hago esto 00:13:24
si, esto me actualiza el alumno este de aquí 00:13:26
pero si no existiera 00:13:30
porque yo he escrito mal la clave 00:13:32
y no existe, entonces yo no quiero 00:13:34
que se meta uno nuevo con esa clave errónea 00:13:36
no quiero que se meta uno nuevo 00:13:38
entonces tiene sentido que exista un método 00:13:40
que solamente 00:13:42
actualice la clave que tú le das 00:13:43
y si esa clave no exista, que no haga 00:13:46
nada, que no haga nada 00:13:48
vale, pues ese método existirá 00:13:50
pues seguro, verdad 00:13:52
como de costumbre 00:13:56
si uno cuando desarrolla 00:13:58
una librería 00:14:00
escoge bien los nombres 00:14:02
pues va a facilitar la vida al que lo busca 00:14:03
nosotros vamos por aquí 00:14:06
y rápidamente tendríamos que ver 00:14:08
algo que tenga toda la pinta de que es eso 00:14:10
y bueno 00:14:12
nos suena 00:14:14
a este, ¿verdad? 00:14:16
nos suena a este por el nombre, porque está bien elegido 00:14:20
pues este es el que 00:14:22
el valor con esta clave 00:14:24
te lo sustituye 00:14:28
con este objeto 00:14:30
si es que existe la clave 00:14:31
Si no, no hace nada 00:14:33
¿Verdad? 00:14:35
Te sustituye 00:14:37
El valor de esa clave 00:14:38
Solo si existe 00:14:40
Si no, nada 00:14:42
Con lo cual no es exactamente como el put 00:14:43
Porque el put además te insertaría 00:14:46
¿Vale? 00:14:48
¿Vale? Y bueno 00:14:54
Está sobrecargado 00:14:55
Tiene dos 00:14:57
Tiene otra versión aquí 00:14:58
Que te sustituye 00:15:02
El valor 00:15:05
de esta clave 00:15:07
el valor de esta clave 00:15:07
pero solo si se corresponde con este 00:15:09
es decir, si esta clave 00:15:12
verifica que se corresponde 00:15:14
con este valor, entonces te lo cambia 00:15:16
a este otro, si no se corresponde 00:15:18
con ese, pues no 00:15:20
es como la otra versión del remove 00:15:21
que le dabas dos parámetros 00:15:24
si el valor asociado a la clave coincide 00:15:25
te lo elimina, si no, no 00:15:28
pues aquí, si el valor asociado a esta clave 00:15:29
te coincide con este, te lo sustituye 00:15:32
con el otro, si no, no 00:15:34
¿verdad que sí? 00:15:35
Vale, ahora vamos a recorrer, actualizar, bueno, ahora lo más retorcidillo, vale, 00:15:39
¿Cómo que no es la misma? 00:17:07
Bueno, a ver, he puesto una al azar 00:17:16
Pues si no, entonces no hace nada 00:17:18
Pero vamos, que el método es este 00:17:19
¿Vale? Es decir, el método es 00:17:21
Si esta clave existiera, que no lo sé 00:17:23
Te lo sustituye por este 00:17:25
Y si no existe, nada 00:17:26
No como el put, que sí que te inserta 00:17:28
¿Vale? Recorrer 00:17:30
Para ver todo lo que hay 00:17:32
Pues en realidad hay muchas formas 00:17:37
Como uno se puede plantear recorrer 00:17:41
¿Vale? 00:17:44
Esto no es tan fácil como un for each, porque el map tiene dos cosas, el map tiene la clave y el valor, es decir, es un conjunto de pares, entonces, ¿qué recorres? Recorres las claves, recorres los valores, ¿cómo haces? El for each, así a palo seco, no puedes. 00:17:47
Bueno, pues hay varias posibilidades 00:18:01
Usar unos métodos que te devuelven solo las claves 00:18:04
O solo los valores 00:18:09
Y recorrer eso 00:18:10
Por ejemplo, podemos hacer esto 00:18:12
Recorremos a partir del conjunto de claves 00:18:16
Es decir, yo tengo mi map 00:18:24
Alumnos 00:18:29
Mi map tiene un método que se llama keyset 00:18:30
¿Vale? 00:18:34
y key set me devuelve el conjunto de las claves. 00:18:35
Entonces, por ejemplo, vamos a suponer que yo guardo aquí mi conjunto de claves. 00:18:41
Vale, tengo aquí mi conjunto de claves. 00:18:56
Y ahora ya, esto ya es un conjunto sencillo. 00:18:59
Me puedo plantear recorrerlo, por ejemplo, así. 00:19:02
Y el valor, ¿cuál sería? 00:19:05
Alumnos.get key. 00:19:36
bueno, pues con esto estoy recorriendo 00:19:41
los dos elementos del map 00:19:46
tengo aquí mi conjunto de claves 00:19:48
recorro mis claves 00:19:50
y en cada iteración 00:19:51
en cada iteración tengo 00:19:53
la clave 00:19:56
y el valor 00:19:58
si quiero, a partir de esa clave 00:19:59
claro, con el get 00:20:02
entonces esto al ser un set 00:20:03
normal y corriente 00:20:11
lo puedo recorrer con un for each, con un iterador 00:20:12
pues como quiera 00:20:15
yo recorrer un set 00:20:17
Nunca con un for de índice, claro 00:20:18
Porque los conjuntos no tienen posición, no están ordenados 00:20:20
Bueno, pues esta es una posibilidad 00:20:23
Me saco el conjunto de las claves 00:20:25
Y ya con las claves 00:20:27
Puedo recorrerlas para ver lo que tiene 00:20:29
Lo que sea 00:20:31
Esta es una posibilidad 00:20:32
¿Vale? 00:20:34
Entonces, ¿que queremos solo los valores? 00:20:41
Pues por ejemplo 00:20:43
Yo que sé, solo los valores sin las claves 00:20:44
Pues hay 00:20:47
algún método por ahí que me saca los valores 00:20:48
alumnos 00:20:51
tiene un método 00:20:56
values que me saca 00:20:58
los valores 00:21:00
vale 00:21:01
en este caso 00:21:02
dime un segundito 00:21:05
vamos a ponerlo aquí 00:21:24
me devuelve una 00:21:29
una colección de los alumnos 00:21:30
vale 00:21:33
dime 00:21:33
No sé qué set te devuelve 00:21:45
Te devuelve un conjunto 00:21:58
No sé si te devuelve un conjunto 00:21:59
No sé qué tipo de conjunto es 00:22:02
Pero no nos importa 00:22:03
¿Vale? 00:22:06
Te devolverá, entiendo yo 00:22:08
Que en función de 00:22:10
Si es un HashMap 00:22:12
Te devolverá un hash set con las claves 00:22:14
Y si es un tree map 00:22:16
Te devolverá un tree set, supongo 00:22:17
Porque lo que hace el map 00:22:19
Es guardar esto en un set 00:22:21
Eso sí o sí 00:22:23
¿En qué set? Hash set si es hash map 00:22:24
Tree set si es tree map 00:22:28
Entonces entiendo que el set que te devuelve 00:22:29
Tiene esa 00:22:31
Ese también 00:22:32
El linked hash set 00:22:35
Que te devuelve un set con esa estructura 00:22:36
Directamente 00:22:39
Pero bueno, cual sea 00:22:40
A la hora nosotros de recorrerla es que nos da igual 00:22:43
En realidad, porque trabajamos 00:22:45
Con todos los set igual 00:22:47
Vale, entonces 00:22:48
Vale, que queremos solo los valores 00:22:52
Pues los podemos guardar aquí en una colección 00:23:06
Y como podemos recorrer 00:23:08
Cualquier colección 00:23:10
Iterando, vale 00:23:11
Pues entonces 00:23:13
Pero vamos, recorrer solo los valores sin claves es más raro 00:23:14
Pero bueno, no pasa nada 00:23:18
O sea, esto lo podemos hacer 00:23:19
Vale, punto 00:23:21
Iterando 00:23:29
entonces cualquier colección 00:23:30
me da igual lo que me haya devuelto esto 00:23:36
que no lo sé, no sé si me ha devuelto una lista 00:23:37
un set, no sé que me ha devuelto 00:23:39
pero me ha devuelto una colección 00:23:42
sea list o sea set 00:23:43
porque son las dos implementaciones de 00:23:46
collective, sea la que sea 00:23:47
se puede iterar con un iterador 00:23:50
vale 00:23:52
entonces yo ahora 00:23:53
pues bueno, podría hacer esto y ya está 00:23:55
bueno pues 00:23:57
con esto estaría mostrando 00:24:13
Solamente los valores 00:24:14
¿Vale? Otra posibilidad más 00:24:16
Otra cosa, uno ya juega con esto 00:24:18
Para hacer en la aplicación que sea lo que tenga que hacer 00:24:20
Con esto estaríamos mostrando 00:24:22
Solo los valores 00:24:24
¿Vale? 00:24:25
Sí, claro, efectivamente, también 00:24:31
Yo podría hacer un for each también, efectivamente 00:24:33
¿Vale? 00:24:36
En values, perdón 00:24:44
Cualquier colección es recorrible con un for each 00:24:45
Claro, también, efectivamente 00:24:50
el iterador pues tendría sentido 00:24:54
si yo quisiera modificar 00:24:58
esa colección dentro de 00:24:59
vale 00:25:01
pero luego a la hora de recorrer 00:25:07
hay otra estructura muy interesante 00:25:10
que es 00:25:13
una vista que nosotros podemos hacer 00:25:14
del map 00:25:17
que engloba las dos cosas en un único objeto 00:25:18
es decir, nuestro map 00:25:21
es esto 00:25:25
la complejidad que tiene es 00:25:26
que cada elemento son dos cosas 00:25:29
Eso es lo que nos ha complicado el recorrido 00:25:31
Que o bien hemos sacado las claves 00:25:34
Y hemos recorrido a través de las claves 00:25:35
Sacando el valor 00:25:37
O bien hemos sacado los valores 00:25:38
Y hemos recorrido los valores 00:25:40
A lo que nos ha complicado el recorrido 00:25:41
Es que cada elemento son dos cosas 00:25:42
Vale, pues esto se puede transformar 00:25:44
A una cosa 00:25:48
Que 00:25:51
Lo que está 00:25:52
Que envuelve en un único elemento cada par 00:25:54
¿Vale? 00:25:56
Cada par se mete en un único elemento 00:25:58
esta estructura 00:26:01
es como si fuera una envolvente 00:26:04
de esto, donde en cada 00:26:05
posición suya mete 00:26:07
las dos cosas, con lo cual se convierte 00:26:09
ya en una estructura de elementos únicos 00:26:11
aunque cada uno de ellos tiene dos cosas 00:26:13
en realidad, tiene dos partes 00:26:15
y esta estructura de elementos únicos 00:26:17
uno ya lo recorre como cualquier colección 00:26:19
con el for each, con el iterador, como quiera 00:26:21
bueno, pues 00:26:23
esta estructura es 00:26:25
es map entry, se llama 00:26:27
map entry, entonces map entry es como una especie 00:26:29
de envolvente del map 00:26:32
en realidad más que un envolvente 00:26:33
es como una vista 00:26:36
como una vista 00:26:36
de una tabla de bases de datos 00:26:39
aunque igual las vistas de las tablas y todo eso 00:26:41
todavía no las habéis visto, imaginaos 00:26:43
¿no? 00:26:45
vale, entonces una vista de cualquier 00:26:47
cosa en informática 00:26:49
una vista es 00:26:51
una forma amable 00:26:52
o transformada o tuneada 00:26:54
de acceder a esos datos 00:26:57
Uno en general cuando tiene unos datos 00:26:58
Esos datos 00:27:00
Como tienen que tener toda la información de su aplicación 00:27:03
Pueden ser muy complejos 00:27:05
Uno puede tener un modelo 00:27:06
De 200 tablas 00:27:09
Porque su aplicación 00:27:11
Necesita un montón de datos 00:27:13
Vale, entonces si mi aplicación 00:27:14
Tiene que estar todo el rato 00:27:17
Entreteniéndose, recorriendo 00:27:18
Esas 200 tablas 00:27:21
Buscando, sacando, etcétera 00:27:23
Pues se va a volver loca 00:27:24
Entonces, una vista es una especie de forma más amable, más sencilla de acceder a esas tablas 00:27:25
Es decir, es una recomposición de esas tablas para que sean más manejables 00:27:34
Por ejemplo, vosotros tenéis lógicamente vuestra base de datos de coches, ¿verdad? 00:27:38
Claro, pues, ¿qué tendrá? Yo que sé cuántas tablas tiene, pues unas cuantas, cinco, seis, no lo sé 00:27:47
entonces a lo mejor una parte de la aplicación 00:27:52
una parte de la aplicación 00:27:56
solamente trabaja con 00:27:57
marcas, porque está cambiando 00:27:59
marcas, actualizando marcas, una parte de la aplicación 00:28:02
solo trabaja con las marcas 00:28:04
entonces que necesidad le da a esa aplicación 00:28:05
hacerle visible 00:28:07
toda la tabla, porque le vamos a complicar 00:28:09
la vida, porque tiene que ir distinguiendo que tabla 00:28:11
le toca, etcétera, que necesidad 00:28:13
pues hacemos una cosa que se llama vista 00:28:15
entonces 00:28:17
esa vista es como una especie de subconjunto 00:28:19
de esa tablita pequeñito 00:28:22
solo para esa parte 00:28:23
de mi aplicación. Ese subconjunto 00:28:26
puede ser la tabla coches 00:28:28
solamente, porque eso es una vista 00:28:29
que es una especie de subconjunto 00:28:32
sencillito de mi base 00:28:34
de datos, una especie de subconjunto sencillito 00:28:36
que se quita todo lo que no usa 00:28:38
y se queda solo con una parte. 00:28:40
Y entonces, esta parte mía 00:28:43
de la aplicación usa esa vista. 00:28:44
Es la idea de lo que es una vista. 00:28:46
¿Realmente es una copia 00:28:49
de la base de datos? ¿Es una copia 00:28:50
de esa tabla en otro sitio, no 00:28:52
no es una copia, es una especie 00:28:54
de ventanita a eso 00:28:56
¿vale? esto es como 00:28:58
nosotros pues tenemos en este cuarto 00:28:59
lo de las vistas se usa mucho 00:29:02
con textos, pues tenemos aquí en este aula un montón 00:29:03
de mesas y una ventana 00:29:06
corrida única 00:29:08
entonces, el que viene a arreglar las mesas 00:29:08
pues entra por 00:29:12
esa ventana corrida única gigante 00:29:14
y ve todas las mesas 00:29:16
entonces tiene que buscar entre 00:29:17
todas a ver cuál arregla 00:29:20
¿Cómo podríamos organizar esto con vistas? 00:29:21
Pues en lugar de una ventana corrida gorda 00:29:26
Hacer un montón de ventanitas 00:29:28
Que serían las vistas 00:29:30
Ventana 1, ventana 2, ventana 3 por separado 00:29:31
La ventana 1 te lleva a la mesa 1 00:29:33
Y ya está 00:29:35
La ventana 2 o vista 2 00:29:36
Te lleva a la mesa 3 y 4 00:29:39
Entonces ahora 00:29:41
Que un arreglador de mesas 00:29:43
Solo va a trabajar con la mesa 1 00:29:45
Porque es la única que tiene asignada 00:29:48
entra a través de la ventana 1 00:29:49
y ya está. 00:29:52
Pues la ventana sería la vista, 00:29:53
que es ese acceso 00:29:55
que tiene hacia la única parte 00:29:57
de la base de datos que le interesa. 00:30:00
Entonces es mucho más sencillo 00:30:03
para el arreglador de mesas 00:30:04
entrar por la ventana que le corresponde, 00:30:05
que sería la vista, 00:30:08
porque lo único que va a ver 00:30:09
es la mesa que le toca, 00:30:10
no va a haber más, 00:30:11
entonces no tiene que elegir. 00:30:12
Entonces, a través de la vista 00:30:14
se accede al objeto real. 00:30:16
No es que hagamos una copia de las mesas y le decimos, oye, te hago una copia de la mesa 1 y tú trabajas con la copia. 00:30:18
¿Te hago una copia de la mesa 2 y 3? No, no, no. 00:30:24
El arreglador de mesas trabaja con la mesa real, pero ha entrado a través de un caminito especial para él, 00:30:27
de un camino especial para él que le ha hecho poder olvidarse de todo el resto de cosas. 00:30:33
Pues es una vista, ¿vale? 00:30:39
Bueno, pues el Map Entry es como si fuera una vista distinta del Map, 00:30:42
que es una vista en la cual 00:30:47
yo en lugar de ver los dos elementos 00:30:49
por separado, veo un único 00:30:52
elemento que los tiene dentro los dos 00:30:54
¿qué gano con eso? 00:30:56
pues que pueda hacer recorridos 00:30:58
como hago 00:31:00
con los list y los set, porque esto es una colección 00:31:02
de elementos únicos, gano eso 00:31:04
en realidad 00:31:06
entonces 00:31:06
pero lo que es importante es que entendamos 00:31:09
que es una vista, luego al ser 00:31:12
una vista, si yo hago modificaciones 00:31:14
aquí, las estoy haciendo 00:31:16
en el map original 00:31:18
porque esto no es que yo haga una copia 00:31:19
con los datos metiditos en objetos únicos 00:31:22
no hago una copia 00:31:24
hago una especie de ventanita 00:31:25
a través de la cual yo entro 00:31:28
a los dos, pero entro 00:31:30
mirándolos como si fuera 00:31:32
una estructura única, pero si yo modifico 00:31:34
aquí, modifico estos en realidad 00:31:36
es una vista, vale 00:31:38
bueno, pues como declaramos 00:31:39
el map entry este de aquí 00:31:42
mediante map 00:31:44
vale 00:31:51
entonces las vistas son estructurales 00:31:54
lo que pasa es que claro, en función del contexto 00:31:58
en el que uno esté, bases de datos, programación 00:32:00
administración de sistemas 00:32:02
lo que sea, pues lógicamente 00:32:04
se concretan de una manera o de otra 00:32:05
pero la vista es un elemento básico 00:32:07
en informática, vale 00:32:10
que es, te voy a 00:32:11
mostrar esto a mi manera 00:32:13
para facilitarte el acceso 00:32:15
Lo voy a mostrar de una manera modificada 00:32:18
Bueno, pues el map entry 00:32:20
El map entry 00:32:22
Este 00:32:24
¿Cómo obtenemos esa colección 00:32:26
De map entries? 00:32:29
Pues en mi colección alumnos 00:32:30
Uy, a que la escribo yo aquí 00:32:31
Tenemos un método 00:32:33
Que es el entry set 00:32:38
¿Vale? 00:32:40
Entonces, el entry set 00:32:41
Nos devuelve 00:32:46
Una colección única 00:32:47
Que va a ser un conjunto 00:32:49
Y este conjunto 00:32:51
¿De qué va a ser? 00:32:58
De elementos map entry, de esos que os he dicho 00:33:00
De elementos map entry 00:33:02
Que cada uno de ellos es 00:33:07
De string 00:33:08
Y alumno, en este caso 00:33:09
Vale, esta es mi vista 00:33:12
Mi vista es un único conjunto, colección única 00:33:23
¿De qué? 00:33:26
De un montón de elementos de esta clase 00:33:27
Y cada uno de estos elementos 00:33:29
Tiene dentro 00:33:32
Ahora ya, la clave por un lado 00:33:33
Y el valor por otro 00:33:36
vale 00:33:37
entonces, esta ya la podemos recorrer 00:33:40
como recorreríamos cualquier colección 00:33:43
sacando un iterador con un for each 00:33:45
como recorreríamos cualquier set 00:33:47
por ejemplo, si la recorremos con un for each 00:33:48
pues para cada elemento 00:33:51
de estos, para cada elemento 00:33:53
de estos, que envuelve 00:33:55
un par dentro 00:33:57
de mi vista 00:34:02
pues yo ahora aquí, este tiene 00:34:02
dentro, tanto la clave 00:34:08
que la saco con get key 00:34:10
Como el valor 00:34:13
Que lo puedo sacar con getValue 00:34:16
¿Vale? Entonces 00:34:21
Este objeto es de esta clase 00:34:32
Que me envuelve 00:34:34
A los otros dos 00:34:36
Y los puedo sacar de ese envoltorio 00:34:37
Con getKey la clave, getValue el valor 00:34:40
Lo que yo necesite sacar 00:34:42
¿Vale? 00:34:44
Y la colección de estos 00:34:46
Elementos únicos 00:34:48
La obtengo con el método entrySet 00:34:49
Y ya está 00:34:52
vale, pues vamos a parar aquí 00:34:53
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:
3
Fecha:
9 de marzo de 2026 - 10:09
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
35′ 02″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
143.60 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid