1 00:00:00,000 --> 00:00:09,060 Venga, a ver, nos quedan de colecciones dos cositas y luego, por supuesto, toda la práctica 2 00:00:09,060 --> 00:00:13,740 la que permite ya verdaderamente conocer esto y manejarlo con soltura, ¿vale? 3 00:00:13,820 --> 00:00:23,399 Entonces, silencio, William, estás todo el rato preguntando cosas que ya hemos visto. 4 00:00:24,780 --> 00:00:29,780 Sí, sí, estoy explicando, estoy explicando. 5 00:00:30,000 --> 00:00:36,060 estaba hablando yo ya estaba aplicando de hecho he dicho la frase hasta ahora hemos visto y tú 6 00:00:36,060 --> 00:00:45,579 estabas hablando eso ya era explicación vale bueno vale pues entonces que hemos visto de 7 00:00:45,579 --> 00:00:51,359 colecciones hemos visto que efectivamente son cajas para guardar cosas a mogollón vale 8 00:00:51,359 --> 00:00:58,840 objetos siempre objetos nunca datos primitivos si yo quiero en una colección guardar numeritos 9 00:00:58,840 --> 00:01:00,880 enteros, no puedo 10 00:01:00,880 --> 00:01:01,640 guardar 11 00:01:01,640 --> 00:01:04,680 no puedo hacer una lista de esto 12 00:01:04,680 --> 00:01:06,480 ¿vale? 13 00:01:06,540 --> 00:01:08,159 de esto no puedo, recordad 14 00:01:08,159 --> 00:01:10,500 porque los 15 00:01:10,500 --> 00:01:12,579 tipos genéricos solo 16 00:01:12,579 --> 00:01:14,420 pueden ser sustituidos 17 00:01:14,420 --> 00:01:15,879 por tipos objeto 18 00:01:15,879 --> 00:01:17,560 no por tipos primitivos 19 00:01:17,560 --> 00:01:20,400 ¿eso es un problema? no, si yo quiero hacer 20 00:01:20,400 --> 00:01:22,079 una lista de números enteros 21 00:01:22,079 --> 00:01:23,340 pues entonces pongo 22 00:01:23,340 --> 00:01:26,560 el graper, el envolvente 23 00:01:26,560 --> 00:01:28,439 y ya está, que lo hay para la abel y para 24 00:01:28,439 --> 00:01:29,879 ¿vale? bueno 25 00:01:29,879 --> 00:01:38,700 no, a mí no me encanta, a mí me deprime 26 00:01:38,700 --> 00:01:42,180 pues a ver 27 00:01:42,180 --> 00:01:50,400 a ver, repetirlo no puedo 28 00:01:50,400 --> 00:01:52,239 no puedo 29 00:01:52,239 --> 00:01:54,019 a ver, está en una grabación 30 00:01:54,019 --> 00:01:56,019 además está etiquetado 31 00:01:56,019 --> 00:01:58,040 porque trato de etiquetar las grabaciones 32 00:01:58,040 --> 00:01:59,819 poniendo lo que cuento y hay una etiquetada 33 00:01:59,819 --> 00:02:01,180 precisamente con tipos genéricos. 34 00:02:01,879 --> 00:02:03,799 ¿Vale? Lo más que te puedo decir es lo 35 00:02:03,799 --> 00:02:05,859 imprescindible que necesitas para entender 36 00:02:05,859 --> 00:02:08,099 lo que estoy diciendo. Pero eso no te lo haré 37 00:02:08,099 --> 00:02:09,979 para esa. Así que más vale que te lo estudies 38 00:02:09,979 --> 00:02:11,439 y te lo mires. ¿Vale? 39 00:02:11,979 --> 00:02:12,360 Bueno. 40 00:02:14,120 --> 00:02:15,060 Entonces, cuando 41 00:02:15,060 --> 00:02:17,560 hacemos colecciones de cualquier tipo, 42 00:02:20,039 --> 00:02:21,379 podemos crearlas así, 43 00:02:21,759 --> 00:02:23,039 sin especificar el tipo, 44 00:02:23,639 --> 00:02:25,039 con lo cual en esta lista 45 00:02:25,039 --> 00:02:28,340 uno puede meter 46 00:02:28,340 --> 00:02:30,699 el objeto, el tipo de objeto 47 00:02:30,699 --> 00:02:32,259 que le dé la gana, un objeto coche 48 00:02:32,259 --> 00:02:34,500 un objeto alumno, un objeto casa 49 00:02:34,500 --> 00:02:36,620 lo que le dé la gana, porque la lista 50 00:02:36,620 --> 00:02:38,099 está en modo genérico 51 00:02:38,099 --> 00:02:39,919 no tiene particularizado 52 00:02:39,919 --> 00:02:41,599 qué tipo de dato va a ir en ella 53 00:02:41,599 --> 00:02:44,159 ese no es el uso más 54 00:02:44,159 --> 00:02:46,060 recomendable, porque entonces 55 00:02:46,060 --> 00:02:47,860 en esta caja caen mezclados 56 00:02:47,860 --> 00:02:50,240 coches, casas, perros y gatos 57 00:02:50,240 --> 00:02:52,020 si luego yo me pongo a sacar 58 00:02:52,020 --> 00:02:53,819 de la caja y digo, uh, un perro 59 00:02:53,819 --> 00:02:58,080 uy un gato, pues tengo que tratarlos de forma individualizada 60 00:02:58,080 --> 00:03:02,159 no es desde luego la mejor estrategia para hacer un software 61 00:03:02,159 --> 00:03:05,840 luego el uso recomendable de las colecciones es 62 00:03:05,840 --> 00:03:11,860 concretar el tipo de dato que va a caer en la caja 63 00:03:11,860 --> 00:03:14,960 para que todos los datos sean de ese tipo 64 00:03:14,960 --> 00:03:18,879 entonces eso se concreta como se concreta en las clases genéricas 65 00:03:18,879 --> 00:03:20,180 que el list es una clase genérica 66 00:03:20,180 --> 00:03:22,180 poniendo entre corchetes 67 00:03:22,180 --> 00:03:24,259 el tipo de dato que va a caer ahí 68 00:03:24,259 --> 00:03:25,879 ¿que son integer? 69 00:03:26,240 --> 00:03:28,639 pues integer, entonces ahora ya en esta lista 70 00:03:28,639 --> 00:03:30,219 solo podrán ir numeritos 71 00:03:30,219 --> 00:03:32,520 ¿que yo pongo ahí list alumno? 72 00:03:32,620 --> 00:03:34,099 pues en esa lista solo podrán ir 73 00:03:34,099 --> 00:03:35,439 solo podrán ir alumnos 74 00:03:35,439 --> 00:03:38,159 eso facilita las iteraciones 75 00:03:38,159 --> 00:03:40,740 porque todo lo que salga en la posición 0, 1, 2, 3 76 00:03:40,740 --> 00:03:42,580 todo va a ser del mismo tipo 77 00:03:42,580 --> 00:03:44,139 no hay que hacer casting 78 00:03:44,139 --> 00:03:46,000 que siempre dan errores 79 00:03:46,000 --> 00:03:47,080 o casi siempre etc 80 00:03:47,080 --> 00:03:49,159 bueno pues entonces 81 00:03:49,159 --> 00:03:53,080 de colecciones 82 00:03:53,080 --> 00:03:56,840 vimos que había dos tipos 83 00:03:56,840 --> 00:03:58,719 listas y conjuntos 84 00:03:58,719 --> 00:03:59,099 ¿verdad? 85 00:04:01,099 --> 00:04:02,479 la interfaz list 86 00:04:02,479 --> 00:04:05,680 con dos implementaciones 87 00:04:05,680 --> 00:04:13,080 array list 88 00:04:13,080 --> 00:04:17,129 y linked list 89 00:04:17,129 --> 00:04:21,060 que se usan 90 00:04:21,060 --> 00:04:22,699 en realidad igual, sirven para 91 00:04:22,699 --> 00:04:24,519 meter, recorrer, sacar 92 00:04:24,519 --> 00:04:26,879 por posición, borrar 93 00:04:26,879 --> 00:04:28,540 con remove, para lo mismo ¿vale? 94 00:04:28,660 --> 00:04:31,680 pero sabemos que se diferencian en cómo están hechas por dentro 95 00:04:31,680 --> 00:04:33,639 ¿verdad? esta por dentro es una array 96 00:04:33,639 --> 00:04:34,959 y esta por dentro es una lista enlazada 97 00:04:34,959 --> 00:04:36,699 ¿y alguien 98 00:04:36,699 --> 00:04:39,899 podría recordarme 99 00:04:39,899 --> 00:04:41,759 alguna tradiferencia 100 00:04:41,759 --> 00:04:43,180 en realidad 101 00:04:43,180 --> 00:04:45,720 que ofrece esta implementación respecto 102 00:04:45,720 --> 00:04:46,139 a esta? 103 00:04:46,819 --> 00:04:48,720 que en array list es más fácil 104 00:04:48,720 --> 00:04:50,680 ver el contenido 105 00:04:50,680 --> 00:04:53,100 ¿cómo más fácil? 106 00:04:53,279 --> 00:04:55,019 a efectos de usarla 107 00:04:55,019 --> 00:04:55,959 ¿hay alguna diferencia? 108 00:04:55,959 --> 00:04:59,079 a ver, es una pregunta un poco 109 00:04:59,079 --> 00:05:00,819 abstracta, pero por si acaso alguien 110 00:05:00,819 --> 00:05:01,860 se acuerda 111 00:05:01,860 --> 00:05:13,259 no, a ver, los dos empiezan vacío 112 00:05:13,259 --> 00:05:14,800 el ArrayList inicialmente empieza 113 00:05:14,800 --> 00:05:16,019 con su Array interno vacío 114 00:05:16,019 --> 00:05:20,060 o sea, las dos son dinámicas 115 00:05:20,060 --> 00:05:22,220 las dos son dinámicas, ahí no hay diferencia 116 00:05:22,220 --> 00:05:25,000 las dos empiezan con una caja de tamaño 0 117 00:05:25,000 --> 00:05:27,060 según yo voy metiendo, se agranda 118 00:05:27,060 --> 00:05:28,980 para lo que tiene que albergar 119 00:05:28,980 --> 00:05:30,660 las dos son dinámicas y en eso no hay diferencia 120 00:05:30,660 --> 00:05:32,439 la única diferencia es que en el ArrayList 121 00:05:32,439 --> 00:05:34,319 lo que se agranda es un Array 122 00:05:34,319 --> 00:05:37,420 y en la LinkedList lo que se agranda es una lista enlazada 123 00:05:37,420 --> 00:05:38,519 que va cogiendo referencias 124 00:05:38,519 --> 00:05:39,639 ahí no hay diferencia 125 00:05:39,639 --> 00:05:40,819 entonces 126 00:05:40,819 --> 00:05:43,860 la única diferencia 127 00:05:43,860 --> 00:05:47,000 a efectos del usuario que lo ve 128 00:05:47,000 --> 00:05:49,199 era que LinkedList te ofrecía 129 00:05:49,199 --> 00:05:51,360 métodos para simular 130 00:05:51,360 --> 00:05:52,939 los funcionamientos de pilas y colas 131 00:05:52,939 --> 00:05:54,759 el push, el pull, todo eso 132 00:05:54,759 --> 00:05:57,300 entonces la linked list te ofrece esos métodos 133 00:05:57,300 --> 00:05:58,959 para simular ese comportamiento 134 00:05:58,959 --> 00:06:01,300 ¿vale? que ArrayList no te ofrece 135 00:06:01,300 --> 00:06:03,199 esos métodos, entonces si uno quiere una pila 136 00:06:03,199 --> 00:06:05,420 por ejemplo, porque le viene muy bien 137 00:06:05,420 --> 00:06:07,060 tener una pila, porque los datos 138 00:06:07,060 --> 00:06:09,480 los va a guardar siempre apilados 139 00:06:09,480 --> 00:06:11,379 y los va a sacar siempre de la cima 140 00:06:11,379 --> 00:06:13,279 si uno quiere una pila 141 00:06:13,279 --> 00:06:15,079 pues instancia en la linked list, usa 142 00:06:15,079 --> 00:06:17,079 push y pop y ya está 143 00:06:17,079 --> 00:06:19,519 ¿vale? usa push y pop y ya está 144 00:06:19,519 --> 00:06:20,839 pues por ejemplo, esa puede ser 145 00:06:20,839 --> 00:06:22,120 una diferencia 146 00:06:22,120 --> 00:06:23,740 ¿vale? 147 00:06:24,759 --> 00:06:26,740 conjuntos 148 00:06:26,740 --> 00:06:30,389 de los conjuntos 149 00:06:30,389 --> 00:06:31,829 hay tres implementaciones 150 00:06:31,829 --> 00:06:32,629 de los cuales 151 00:06:32,629 --> 00:06:35,790 vimos dos 152 00:06:35,790 --> 00:06:40,329 que son 153 00:06:40,329 --> 00:06:42,629 prácticamente iguales 154 00:06:42,629 --> 00:06:44,089 de HACET explicamos 155 00:06:44,089 --> 00:06:45,430 cómo se almacenaba por dentro 156 00:06:45,430 --> 00:06:46,990 que era una función de HACET 157 00:06:46,990 --> 00:06:50,370 hicimos en el ejercicio que está grabado 158 00:06:50,370 --> 00:06:52,089 que os grabé el jueves enterito 159 00:06:52,089 --> 00:06:53,629 está todo explicado 160 00:06:53,629 --> 00:06:56,509 el jueves os grabé un ejercicio entero muy largo 161 00:06:56,509 --> 00:06:59,350 donde está todo explicado 162 00:06:59,350 --> 00:07:00,670 ¿vale? sí, qué guay 163 00:07:00,670 --> 00:07:02,649 el qué guay lo voy a decir yo cuando me ponga a poner cero 164 00:07:02,649 --> 00:07:05,509 uno tras otro, cero, cero, uno, cero 165 00:07:05,509 --> 00:07:06,589 ahí sí que ya 166 00:07:06,589 --> 00:07:07,709 qué guay 167 00:07:07,709 --> 00:07:10,730 no, no, no 168 00:07:10,730 --> 00:07:12,990 ¿para qué te vas a poner un cero? 169 00:07:13,269 --> 00:07:14,170 al lado de mi uno 170 00:07:14,170 --> 00:07:16,629 un diez, yo no pillo 171 00:07:16,629 --> 00:07:18,769 sí, lo he pillado, pero no 172 00:07:18,769 --> 00:07:20,930 cero con uno 173 00:07:20,930 --> 00:07:23,290 pero ahí sí que me voy a reír yo 174 00:07:23,290 --> 00:07:25,110 un montón, fíjate cuando empieza 175 00:07:25,110 --> 00:07:26,149 a ponernos las notas 176 00:07:26,149 --> 00:07:31,730 no, a ver, lo que quiero es que espabiléis 177 00:07:31,730 --> 00:07:33,490 que si os grabo el jueves 178 00:07:33,490 --> 00:07:35,189 un ejercicio enterito, aquí sola 179 00:07:35,189 --> 00:07:37,089 abrandonada, pues que lo veáis 180 00:07:37,089 --> 00:07:38,730 porque no lo quiero repetir 181 00:07:38,730 --> 00:07:39,730 sí 182 00:07:39,730 --> 00:07:43,269 no, si no pasa nada 183 00:07:43,269 --> 00:07:44,490 mejor sola 184 00:07:44,490 --> 00:07:47,670 a mí 185 00:07:47,670 --> 00:07:53,850 a ver, os lo avisé 186 00:07:53,850 --> 00:07:55,769 que lo iba a subir 187 00:07:55,769 --> 00:07:57,850 y lo explica 188 00:07:57,850 --> 00:07:58,290 todo. 189 00:08:01,829 --> 00:08:02,389 Bueno, 190 00:08:02,550 --> 00:08:06,889 mirad en su media 191 00:08:06,889 --> 00:08:10,649 Bueno, 192 00:08:11,790 --> 00:08:14,389 pues, 193 00:08:14,670 --> 00:08:17,509 todos los detalles, 194 00:08:17,750 --> 00:08:19,930 todos los detalles ya del uso 195 00:08:19,930 --> 00:08:22,129 de esto, están en ese ejercicio 196 00:08:22,129 --> 00:08:23,329 que subí y están ahí, 197 00:08:23,850 --> 00:08:25,050 ¿vale? Están todos ahí. 198 00:08:25,769 --> 00:08:31,449 Nos queda una implementación 199 00:08:31,449 --> 00:08:34,490 Nos queda una implementación 200 00:08:34,490 --> 00:08:36,129 Que no hemos visto, que es triset 201 00:08:36,129 --> 00:08:37,769 Esto es muy sencillito 202 00:08:37,769 --> 00:08:39,330 Ya la vemos mañana 203 00:08:39,330 --> 00:08:40,169 Porque hoy es 204 00:08:40,169 --> 00:08:42,350 ¿Vale? 205 00:08:42,549 --> 00:08:47,309 Pero se usa igual que las otras 206 00:08:47,309 --> 00:08:49,450 Es que no dejan de ser conjuntos 207 00:08:49,450 --> 00:08:51,169 Que son cajas para meter cosas 208 00:08:51,169 --> 00:08:54,250 Diferencia entre list y set 209 00:08:54,250 --> 00:08:55,549 No la sabemos ya de memoria 210 00:08:55,549 --> 00:08:58,370 que en las listas tú metes en una posición 211 00:08:58,370 --> 00:09:00,110 y en los conjuntos 212 00:09:00,110 --> 00:09:01,250 no metes en una posición. 213 00:09:01,350 --> 00:09:02,850 ¿Y en los conjuntos no puede haber datos repetidos? 214 00:09:03,490 --> 00:09:05,549 Claro, eso implica que en los conjuntos 215 00:09:05,549 --> 00:09:07,590 no puede haber datos repetidos según 216 00:09:07,590 --> 00:09:09,970 el criterio de Haskell de Equals. 217 00:09:10,509 --> 00:09:12,070 Porque el criterio de igualdad 218 00:09:12,070 --> 00:09:13,389 es Haskell de Equals en secuencia, 219 00:09:13,490 --> 00:09:14,009 uno tras otro. 220 00:09:15,429 --> 00:09:18,529 Entonces, ¿cómo iteramos en una lista? 221 00:09:18,570 --> 00:09:19,929 En una lista podemos iterar 222 00:09:19,929 --> 00:09:21,549 con el forEach de toda la vida 223 00:09:21,549 --> 00:09:23,009 o también con un for de índice, 224 00:09:23,090 --> 00:09:24,110 porque tenemos el método getI. 225 00:09:24,110 --> 00:09:26,889 desde i igual a cero, me diréis a menor que get i 226 00:09:26,889 --> 00:09:28,289 get i, vas sacando por posición 227 00:09:28,289 --> 00:09:30,169 claro, con el set 228 00:09:30,169 --> 00:09:32,509 no puedes iterar con un for de índice 229 00:09:32,509 --> 00:09:34,429 porque no hay posiciones, iteras con un for each 230 00:09:34,429 --> 00:09:36,509 y se acabó, entonces si quieres 231 00:09:36,509 --> 00:09:38,769 encontrar un elemento en tu caja 232 00:09:38,769 --> 00:09:39,889 como están todos a mogollón 233 00:09:39,889 --> 00:09:41,809 en el set, que ese es su problema 234 00:09:41,809 --> 00:09:44,509 tienes que ir sacándolos uno tras otro 235 00:09:44,509 --> 00:09:45,549 ¿es este el que quiero? no 236 00:09:45,549 --> 00:09:47,029 ¿es este el que quiero? no 237 00:09:47,029 --> 00:09:50,309 y así los vas sacando, luego localizar 238 00:09:50,309 --> 00:09:52,769 un elemento dentro de un conjunto 239 00:09:52,769 --> 00:09:53,870 dentro de un set 240 00:09:53,870 --> 00:09:55,769 implica siempre 241 00:09:55,769 --> 00:09:57,769 iterar, tú los has metido 242 00:09:57,769 --> 00:09:59,429 todos muy bien, muy cómodo, me he metido 243 00:09:59,429 --> 00:10:00,809 por ejemplo, tenemos alumnos 244 00:10:00,809 --> 00:10:03,730 su clave es su DNI, pues tú lo metes 245 00:10:03,730 --> 00:10:05,590 ahí, vale, y ahora 246 00:10:05,590 --> 00:10:06,370 quieres ver 247 00:10:06,370 --> 00:10:09,389 qué nota ha sacado el alumno de DNI tal 248 00:10:09,389 --> 00:10:11,429 pues tienes que ir 249 00:10:11,429 --> 00:10:13,549 iterando, este es el DNI 250 00:10:13,549 --> 00:10:15,490 que quiero, no, siguiente, ese es el DNI 251 00:10:15,490 --> 00:10:17,529 que quiero, no, siguiente, ese es el DNI que quiero, no 252 00:10:17,529 --> 00:10:19,049 siguiente, es un rollo 253 00:10:19,049 --> 00:10:21,730 es un rollo, porque cualquier consulta 254 00:10:21,730 --> 00:10:23,549 por clave primaria, cualquier consulta 255 00:10:23,549 --> 00:10:25,289 implica que vayas uno por uno 256 00:10:25,289 --> 00:10:26,470 ¿vale? 257 00:10:28,230 --> 00:10:29,309 bueno pues 258 00:10:29,309 --> 00:10:31,269 eso 259 00:10:31,269 --> 00:10:33,450 hay una estructura 260 00:10:33,450 --> 00:10:35,710 que es la estructura 261 00:10:35,710 --> 00:10:36,070 MAP 262 00:10:36,070 --> 00:10:39,129 que trata de 263 00:10:39,129 --> 00:10:41,289 facilitarnos esa situación 264 00:10:41,289 --> 00:10:43,509 que es, venga voy a meter yo 265 00:10:43,509 --> 00:10:45,230 todos mis datos en una caja mogollón 266 00:10:45,230 --> 00:10:47,429 pero hombre voy a asociar a cada uno 267 00:10:47,429 --> 00:10:49,250 de ellos una clave 268 00:10:49,250 --> 00:10:51,370 que en el caso del alumno pues 269 00:10:51,370 --> 00:10:53,590 podría ser su DNI, en el caso de un pedido 270 00:10:53,590 --> 00:10:54,669 podría ser su código 271 00:10:54,669 --> 00:10:57,610 voy a asociar a cada elemento que meto en la caja 272 00:10:57,610 --> 00:10:59,490 una clave y me quedo 273 00:10:59,490 --> 00:11:01,330 aquí todas, y tengo aquí 274 00:11:01,330 --> 00:11:02,789 todas las claves recogiditas 275 00:11:02,789 --> 00:11:05,570 y cuando yo quiero sacar un elemento 276 00:11:05,570 --> 00:11:07,169 lo puedo sacar por la clave, le digo 277 00:11:07,169 --> 00:11:09,649 oye Mag, dame el elemento 278 00:11:09,649 --> 00:11:10,409 de clave tal 279 00:11:10,409 --> 00:11:13,169 y él te da el de clave tal, ya está 280 00:11:13,169 --> 00:11:14,769 no tienes que iterar tú a mano 281 00:11:14,769 --> 00:11:17,110 irte metiendo hasta que encuentres el de la clave 282 00:11:17,110 --> 00:11:19,370 esta estructura 283 00:11:19,370 --> 00:11:21,889 incorpora unos 284 00:11:21,889 --> 00:11:22,769 mecanismos 285 00:11:22,769 --> 00:11:25,769 para que tú te limites a decirla 286 00:11:25,769 --> 00:11:27,429 a la estructura 287 00:11:27,429 --> 00:11:29,909 recupérame el de clave tal y el de la da 288 00:11:29,909 --> 00:11:31,029 y ya está, ¿vale? 289 00:11:31,149 --> 00:11:33,570 ese es el fundamento 290 00:11:33,570 --> 00:11:35,970 la razón de que exista esta estructura de datos 291 00:11:35,970 --> 00:11:37,110 el map, ¿vale? 292 00:11:38,309 --> 00:11:40,029 que la llamamos colección 293 00:11:40,029 --> 00:11:42,129 porque sirve también para meter datos a mogollón 294 00:11:42,129 --> 00:11:43,350 luego por eso la llamamos colección 295 00:11:43,350 --> 00:11:45,570 pero en realidad en la jerarquía 296 00:11:45,570 --> 00:11:47,210 no hereda de colección 297 00:11:47,210 --> 00:11:49,129 list y set 298 00:11:49,129 --> 00:11:51,629 Si heredan de collection, pero esta no. 299 00:11:51,730 --> 00:11:53,330 Esta es una interfaz map aparte. 300 00:11:53,370 --> 00:11:55,570 Una interfaz map aparte que no le da de collection. 301 00:11:56,309 --> 00:11:57,289 ¿Por qué no le da de collection? 302 00:11:57,990 --> 00:11:59,470 Porque sus métodos son muy distintos. 303 00:11:59,789 --> 00:12:01,769 Porque el map trabaja con pares. 304 00:12:02,690 --> 00:12:03,649 Clave, valor. 305 00:12:03,889 --> 00:12:05,529 Clave, valor. Trabaja con pares. 306 00:12:06,169 --> 00:12:08,090 Luego, añadir, recuperar. 307 00:12:08,090 --> 00:12:10,889 Se hace con métodos muy distintos en su cabecera. 308 00:12:11,789 --> 00:12:13,970 Entonces, meterlo en la interfaz de collection sería un rollo 309 00:12:13,970 --> 00:12:15,950 porque la cabecera de los métodos no se adapta. 310 00:12:16,409 --> 00:12:17,789 Por eso se hace una interfaz aparte. 311 00:12:17,789 --> 00:12:44,120 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. 312 00:12:44,120 --> 00:12:46,700 como veis 313 00:12:46,700 --> 00:12:48,460 iguales que estas 314 00:12:48,460 --> 00:12:49,379 no casual 315 00:12:49,379 --> 00:12:52,460 iguales que estas pero son map 316 00:12:52,460 --> 00:12:53,100 en vez de set 317 00:12:53,100 --> 00:12:54,799 dime 318 00:12:54,799 --> 00:12:58,559 el map es lo mismo 319 00:12:58,559 --> 00:12:59,759 que una array list pero 320 00:12:59,759 --> 00:13:01,539 tú puedes personalizar el list 321 00:13:01,539 --> 00:13:04,340 a ver no en todo caso sería 322 00:13:04,340 --> 00:13:05,799 lo mismo que un set 323 00:13:05,799 --> 00:13:07,659 en el map no hay orden 324 00:13:07,659 --> 00:13:09,539 eso para empezar con lo cual no es una lista 325 00:13:09,539 --> 00:13:11,480 el map es una caja sin orden 326 00:13:11,480 --> 00:13:13,580 entonces el map es como si fuera 327 00:13:13,580 --> 00:13:15,039 un conjunto normal 328 00:13:15,039 --> 00:13:17,879 un set, pero al que cada elemento 329 00:13:17,879 --> 00:13:19,740 que hay en el conjunto le has asociado 330 00:13:19,740 --> 00:13:20,340 una clave 331 00:13:20,340 --> 00:13:23,639 podría poner 1, 2, 3, 4 332 00:13:23,639 --> 00:13:25,019 la que tú quieras 333 00:13:25,019 --> 00:13:27,639 en el momento de meter 334 00:13:27,639 --> 00:13:29,120 en el momento de meter en la caja 335 00:13:29,120 --> 00:13:31,639 decides a qué clave lo asocias 336 00:13:31,639 --> 00:13:32,720 ahora lo vemos 337 00:13:32,720 --> 00:13:35,019 entonces cuando tú metes en un set 338 00:13:35,019 --> 00:13:37,019 por ejemplo, metes el alumno tal cual 339 00:13:37,019 --> 00:13:38,679 mete alumno, y ahí se ha quedado el alumno 340 00:13:38,679 --> 00:13:40,639 cuando tú metes en un map 341 00:13:40,639 --> 00:13:42,580 di, mete alumno con clave 342 00:13:42,580 --> 00:13:44,159 1, por ejemplo. 343 00:13:45,340 --> 00:13:46,840 Mete ahora otro alumno 344 00:13:46,840 --> 00:13:47,940 con clave 2. 345 00:13:48,519 --> 00:13:50,879 Por eso los métodos son distintos en su cabecera 346 00:13:50,879 --> 00:13:52,559 y por eso Map no hereda de Collection 347 00:13:52,559 --> 00:13:54,580 porque no existe Lab, tal cual. 348 00:13:55,200 --> 00:13:56,440 Porque meter en la caja 349 00:13:56,440 --> 00:13:58,460 implica, mete el objeto 350 00:13:58,460 --> 00:14:00,200 y mételo con esta clave. 351 00:14:01,080 --> 00:14:02,379 Entonces, ¿qué te permite 352 00:14:02,379 --> 00:14:04,659 a la hora de meter en la caja que tú metas con una clave? 353 00:14:05,100 --> 00:14:06,299 Pues que la 354 00:14:06,299 --> 00:14:08,720 colección esta tiene ya un registro 355 00:14:08,720 --> 00:14:10,460 de claves y luego tú le puedes decir 356 00:14:10,460 --> 00:14:11,960 sácame el de clave 1 357 00:14:11,960 --> 00:14:13,139 y ya está 358 00:14:13,139 --> 00:14:16,120 y él como tiene una tabla en la que asocia clave 359 00:14:16,120 --> 00:14:17,779 con elemento de la cajita 360 00:14:17,779 --> 00:14:19,860 pues dice, sácame el de clave 1 361 00:14:19,860 --> 00:14:21,519 pues ya, te da el de clave 1 directamente 362 00:14:21,519 --> 00:14:25,019 en un set tú has metido los objetos así tal cual 363 00:14:25,019 --> 00:14:27,080 entonces a la hora de sacarlos 364 00:14:27,080 --> 00:14:29,039 no te queda más remedio 365 00:14:29,039 --> 00:14:30,200 que irte tú al set 366 00:14:30,200 --> 00:14:32,360 e irlos sacando uno por uno 367 00:14:32,360 --> 00:14:33,639 hasta que encuentras el que quieras 368 00:14:33,639 --> 00:14:35,580 pero esta colección al llevar 369 00:14:35,580 --> 00:14:37,580 una tablita de claves 370 00:14:37,580 --> 00:14:40,379 asociadas a cada uno de los objetos 371 00:14:40,379 --> 00:14:42,080 esa asociación sí 372 00:14:42,080 --> 00:14:44,340 no sería igual 373 00:14:44,340 --> 00:14:46,059 que declarar los objetos por individual 374 00:14:46,059 --> 00:14:47,519 y luego meterlos en el set 375 00:14:47,519 --> 00:14:48,919 porque los tienes ya con un nombre 376 00:14:48,919 --> 00:14:53,080 sí, pero una vez que están en el set 377 00:14:53,080 --> 00:14:54,059 ¿cómo los recuperas? 378 00:14:54,879 --> 00:14:56,220 tienes que iterar, sí o sí 379 00:14:56,220 --> 00:15:00,120 claro, incluso en el propio list 380 00:15:00,120 --> 00:15:01,899 solo puedes recuperar o por posición 381 00:15:01,899 --> 00:15:04,139 o iterando, pero al menos por posición 382 00:15:04,139 --> 00:15:06,340 podrías, pero no puedes 383 00:15:06,340 --> 00:15:08,399 por valor, por un valor concreto no puedes 384 00:15:08,399 --> 00:15:10,240 y este te permite recuperar 385 00:15:10,240 --> 00:15:12,039 por una clave que tú hayas asociado 386 00:15:12,039 --> 00:15:13,799 ¿vale? es lo que te aporta 387 00:15:13,799 --> 00:15:15,440 entonces es más cómodo 388 00:15:15,440 --> 00:15:16,720 ¿vale? entonces es una estructura 389 00:15:16,720 --> 00:15:19,259 ¿para eso usar un list no? 390 00:15:20,100 --> 00:15:22,340 no, porque es que en un list no puedes recuperar por valor 391 00:15:22,340 --> 00:15:23,659 solo puedes recuperar por posición 392 00:15:23,659 --> 00:15:25,980 pero tú no sabes en qué posición 393 00:15:25,980 --> 00:15:28,139 está el que tú quieres, o sea, tú metes alumnos 394 00:15:28,139 --> 00:15:30,220 en una lista, o sea, tú sabes que una lista 395 00:15:30,220 --> 00:15:33,259 pero es que igual no nos has metido tú 396 00:15:33,259 --> 00:15:36,179 claro, o sea, que tú puedes tener una lista de alumnos 397 00:15:36,179 --> 00:15:37,820 que te ha llegado de no sé dónde y en la lista 398 00:15:37,820 --> 00:15:38,820 están los alumnos 399 00:15:38,820 --> 00:15:40,940 Y tú quieres el de DNI 37 400 00:15:40,940 --> 00:15:43,360 Pues en la lista no te queda más remedio 401 00:15:43,360 --> 00:15:44,879 Que recorrer el DNI 37 402 00:15:44,879 --> 00:15:45,980 Si te hubiera dado en un map 403 00:15:45,980 --> 00:15:48,279 Tú le dices al map, sácame el de 37 404 00:15:48,279 --> 00:15:50,440 Y ya está, y él te lo saca 405 00:15:50,440 --> 00:15:52,360 Si existe, si no te da ahí anul, claro 406 00:15:52,360 --> 00:15:55,519 Es que no siempre has construido tú la estructura 407 00:15:55,519 --> 00:15:57,220 No has metido tú los datos 408 00:15:57,220 --> 00:15:58,379 Entonces no sabes en qué orden estás 409 00:15:58,379 --> 00:15:59,399 No puedes llevar un registro 410 00:15:59,399 --> 00:16:01,679 Pero es lo mismo que llevar un registro 411 00:16:01,679 --> 00:16:05,200 Sí, pero es que a veces tú no puedes llevarlo 412 00:16:05,200 --> 00:16:07,139 Porque muchos métodos, servicios web 413 00:16:07,139 --> 00:16:08,700 Lo que sea, parten de que ahí te lleva 414 00:16:08,700 --> 00:16:09,679 una caja con cosas 415 00:16:09,679 --> 00:16:11,019 entonces claro 416 00:16:11,019 --> 00:16:13,340 tienes que iterar 417 00:16:13,340 --> 00:16:16,299 el valor que le das al map es un valor con sentido 418 00:16:16,299 --> 00:16:17,700 respecto a un objeto 419 00:16:17,700 --> 00:16:20,139 al final no le das un valor a la tab 420 00:16:20,139 --> 00:16:22,720 claro, o sea se supone que es una clave 421 00:16:22,720 --> 00:16:24,620 primaria que tiene sentido, un DNI 422 00:16:24,620 --> 00:16:25,139 claro 423 00:16:25,139 --> 00:16:28,919 porque el que luego va a recuperar 424 00:16:28,919 --> 00:16:30,779 tiene que saber esa clave que significa 425 00:16:30,779 --> 00:16:32,399 claro, tiene que saber que significa 426 00:16:32,399 --> 00:16:34,580 vale, pues esta es la idea 427 00:16:34,580 --> 00:16:36,220 lo que hay después, bueno pues esto 428 00:16:36,220 --> 00:16:37,899 ¿cómo se usa? 429 00:16:38,700 --> 00:16:47,070 Pues lanzamos 430 00:16:47,070 --> 00:16:48,889 Nuestro eclipse 431 00:16:48,889 --> 00:17:17,759 Vale, pues venga 432 00:17:17,759 --> 00:17:21,920 Efectivamente 433 00:17:21,920 --> 00:17:26,960 Es para animarte el día 434 00:17:29,859 --> 00:17:34,599 ¿Quién falta el jueves? 435 00:17:36,019 --> 00:17:36,920 ¿Y la caja negra? 436 00:17:38,839 --> 00:17:41,259 ¿Las pruebas de caja negra tocaban el jueves? 437 00:17:41,599 --> 00:17:44,039 No hemos visto la primera clase y de eso es el examen. 438 00:17:44,039 --> 00:17:44,359 ¿Sí? 439 00:17:45,140 --> 00:17:46,240 ¿De dónde es el examen? 440 00:17:46,440 --> 00:17:51,839 No, a mí es alguien... 441 00:17:51,839 --> 00:17:53,599 Venga. 442 00:17:55,960 --> 00:17:57,500 ¿Qué le dijo a la tía Rosa que no iba a Venezuela? 443 00:17:58,259 --> 00:17:59,059 ¡Qué milagro! 444 00:17:59,859 --> 00:18:06,339 Tu pregunta es...