1 00:00:00,000 --> 00:00:43,140 Venga, ejercicio 4, ejercicio 4, finish, vale, venga que son menos 10, vale, a ver, este que es muy cortito y muy rápido de hacer, porque no hay que declarar clases ni nada, es para probar un poco como se itera por el map y ya está. 2 00:00:43,140 --> 00:00:45,799 Realiza una aplicación que trabaje con nombres 3 00:00:45,799 --> 00:00:48,539 Y NIF de personas 4 00:00:48,539 --> 00:00:50,899 A ver, vamos a hacer al menos una clase persona 5 00:00:50,899 --> 00:00:52,899 Porque es que si no 6 00:00:52,899 --> 00:00:55,039 Esto se queda muy descafeinado 7 00:00:55,039 --> 00:00:57,140 En lugar de que trabaje con los nombres 8 00:00:57,140 --> 00:00:58,859 Cada NIF que esté asociado a una persona 9 00:00:58,859 --> 00:00:59,500 Con sus datos 10 00:00:59,500 --> 00:01:03,359 Y así ya 11 00:01:03,359 --> 00:01:05,959 En el examen va a quedar todo muy claro 12 00:01:05,959 --> 00:01:09,219 No, no, no 13 00:01:09,219 --> 00:01:12,000 A ver, lo que pasa es que 14 00:01:12,000 --> 00:01:15,359 vosotros sois más listos 15 00:01:15,359 --> 00:01:16,739 de lo que estos ejercicios piden 16 00:01:16,739 --> 00:01:18,879 entonces pues hombre, los modificamos 17 00:01:18,879 --> 00:01:21,060 en el examen se pedirá exactamente lo que quiero que hagáis 18 00:01:21,060 --> 00:01:23,159 vale, pues venga, vamos a hacer 19 00:01:23,159 --> 00:01:24,019 el ejercicio 4 20 00:01:24,019 --> 00:01:26,000 un pelinín tuneado 21 00:01:26,000 --> 00:01:29,040 sí, vamos a hacer la clase 22 00:01:29,040 --> 00:01:29,819 persona 23 00:01:29,819 --> 00:01:35,120 la clase 24 00:01:35,120 --> 00:01:36,920 persona que las 25 00:01:36,920 --> 00:01:39,359 personas pues se caracterizan 26 00:01:39,359 --> 00:01:40,760 por 27 00:01:40,760 --> 00:01:43,140 su nombre 28 00:01:43,140 --> 00:01:48,680 y vamos a ponerle 29 00:01:48,680 --> 00:01:50,620 ahí dije que el anterior 30 00:01:50,620 --> 00:01:52,579 lo íbamos a cambiar a Trisita a ver que cambiaba 31 00:01:52,579 --> 00:01:54,140 algo, pero lo vamos a hacer aquí con Trima 32 00:01:54,140 --> 00:01:55,540 yo creo 33 00:01:55,540 --> 00:01:58,239 y vamos a poner 34 00:01:58,239 --> 00:02:02,640 venga, algo para poder ordenar 35 00:02:02,640 --> 00:02:03,879 con orden natural 36 00:02:03,879 --> 00:02:05,920 la edad y ya está 37 00:02:10,759 --> 00:02:14,620 el nif lo vamos a sacar porque va a ser la clave del par. 38 00:02:15,460 --> 00:02:17,680 Entonces, siempre, hasta ahora hemos hecho siempre ejemplos. 39 00:02:17,780 --> 00:02:20,740 La clave está dentro de, pues, lo vamos a sacar. 40 00:02:21,599 --> 00:02:21,879 Venga. 41 00:02:23,080 --> 00:02:24,319 Hacemos el constructor. 42 00:02:28,819 --> 00:02:30,060 Y el get is set. 43 00:02:34,210 --> 00:02:34,689 ¡Hala! 44 00:02:36,250 --> 00:02:39,590 Pues, esta aplicación trabaja con personas que tienen nombre y edad. 45 00:02:40,169 --> 00:02:40,370 Vale. 46 00:02:40,370 --> 00:02:42,430 entonces esta aplicación 47 00:02:42,430 --> 00:02:44,750 este modelo es un poco confuso 48 00:02:44,750 --> 00:02:46,569 pero si yo trabajo con muchas personas a mogollón 49 00:02:46,569 --> 00:02:48,629 habrá muchas personas que se llamen igual 50 00:02:48,629 --> 00:02:49,949 y tengan la misma edad seguramente 51 00:02:49,949 --> 00:02:52,770 entonces si yo las meto todas a mogollón ahí 52 00:02:52,770 --> 00:02:53,550 pues 53 00:02:53,550 --> 00:02:56,110 ¿cómo las puedo distinguir? 54 00:02:56,189 --> 00:02:57,830 por nombre no las puedo distinguir 55 00:02:57,830 --> 00:02:59,629 por edad no las puedo distinguir 56 00:02:59,629 --> 00:03:01,990 por el NIF 57 00:03:01,990 --> 00:03:04,449 pero es que resulta que el que 58 00:03:04,449 --> 00:03:05,770 hizo esta entidad 59 00:03:05,770 --> 00:03:08,530 no admite retoques porque esta entidad 60 00:03:08,530 --> 00:03:09,590 ya se está usando 61 00:03:09,590 --> 00:03:14,169 en tu aplicación no 62 00:03:14,169 --> 00:03:16,169 tienes que solucionar el tema 63 00:03:16,169 --> 00:03:18,469 a ver, esta clase no la puedes tocar 64 00:03:18,469 --> 00:03:20,949 porque esta clase aparte de esto tiene muchas historias 65 00:03:20,949 --> 00:03:22,969 y tú no tienes acceso a ella, de hecho no tienes ni el código 66 00:03:22,969 --> 00:03:24,569 eso, muy bien 67 00:03:24,569 --> 00:03:26,710 de hecho no tienes ni el código fuente, ni lo tienes 68 00:03:26,710 --> 00:03:29,530 no tienes ni el código fuente 69 00:03:29,530 --> 00:03:29,969 vale 70 00:03:29,969 --> 00:03:32,610 pero tú tienes la restricción 71 00:03:32,610 --> 00:03:34,810 de que tú tienes que poder distinguirlas por NIF 72 00:03:34,810 --> 00:03:36,349 ¿qué haces? 73 00:03:37,110 --> 00:03:38,810 pues un map, no te queda más remedio 74 00:03:38,810 --> 00:03:40,650 que decir, ah, vale, entonces en lugar de meterlas 75 00:03:40,650 --> 00:03:41,569 en un conjunto 76 00:03:41,569 --> 00:03:44,889 lo meto en un 77 00:03:44,889 --> 00:03:46,610 map y en un map ahora ya 78 00:03:46,610 --> 00:03:48,530 cada uno lo asoció a un 79 00:03:48,530 --> 00:03:50,909 ¿vale? Uno podría 80 00:03:50,909 --> 00:03:52,729 decir, podría 81 00:03:52,729 --> 00:03:54,689 decir también, a ver si yo 82 00:03:54,689 --> 00:03:56,530 quiero distinguir a las personas que se 83 00:03:56,530 --> 00:03:58,689 llaman igual y tienen la misma 84 00:03:58,689 --> 00:04:00,490 edad, uno podría decir 85 00:04:00,490 --> 00:04:02,650 silencio, a ver 86 00:04:02,650 --> 00:04:04,250 si os distraéis y no os enteráis 87 00:04:04,250 --> 00:04:05,849 luego lloráis 88 00:04:05,849 --> 00:04:08,389 vale, entonces uno podría también 89 00:04:08,389 --> 00:04:09,870 resolver esta situación diciendo 90 00:04:09,870 --> 00:04:11,789 bueno, pues voy a echar una lista 91 00:04:11,789 --> 00:04:14,150 como una lista las puedo distinguir por posición 92 00:04:14,150 --> 00:04:16,529 pero ostras, que feo eso 93 00:04:16,529 --> 00:04:18,889 porque entonces tienes que llevar el registro 94 00:04:18,889 --> 00:04:20,089 de a cada persona 95 00:04:20,089 --> 00:04:21,870 en qué posición la pusiste 96 00:04:21,870 --> 00:04:23,769 si la pusiste en la posición 8 97 00:04:23,769 --> 00:04:26,389 y si luego resulta que tú eliminas 98 00:04:26,389 --> 00:04:28,709 de tu lista a la que está en la posición 3 99 00:04:28,709 --> 00:04:30,649 la de la 8 te ha pasado a la 7 100 00:04:30,649 --> 00:04:32,509 entonces sería un desmadre 101 00:04:32,509 --> 00:04:34,850 el gestionar cada persona en qué posición está 102 00:04:34,850 --> 00:04:36,470 para poder distinguirlas 103 00:04:36,470 --> 00:04:37,829 y saber, sería un lío 104 00:04:37,829 --> 00:05:01,769 Entonces, la solución de, como yo quiero personas de mismo nombre y misma edad que coexistan en mi colección, meterlas en una lista y distinguirlas por posición, esa solución es un galimatías, ¿vale? Entonces, ¿cuál es mejor solución? Voy a asociarles una clave a cada una de ellas y lo meto en un mapa y ya está, esa es la solución ideal, ¿vale? 105 00:05:01,769 --> 00:05:03,730 ¿Qué clave? Pues encima una clave con sentido 106 00:05:03,730 --> 00:05:05,350 Pues el nif, por ejemplo 107 00:05:05,350 --> 00:05:07,790 Pues venga, ahora ya nos hacemos 108 00:05:07,790 --> 00:05:08,490 Nuestro main 109 00:05:08,490 --> 00:05:16,560 Vale, pues yo voy a trabajar con un montón 110 00:05:16,560 --> 00:05:18,540 De personas, ordenándolas, metiéndolas 111 00:05:18,540 --> 00:05:20,740 Sacándolas, haciendo lo que tengan que hacer las personas 112 00:05:20,740 --> 00:05:24,439 Pues por ejemplo, las personas 113 00:05:24,439 --> 00:05:26,579 Van a saludar, para que puedan hacer cosas 114 00:05:26,579 --> 00:05:27,660 En la iteración 115 00:05:27,660 --> 00:05:30,620 Pues vamos a hacer que las personas 116 00:05:30,620 --> 00:05:33,459 Saluden 117 00:05:33,459 --> 00:05:37,910 pues diciendo 118 00:05:37,910 --> 00:05:39,689 hola, soy 119 00:05:39,689 --> 00:05:42,949 este 120 00:05:42,949 --> 00:05:49,860 y tengo 121 00:05:49,860 --> 00:05:57,240 años 122 00:05:57,240 --> 00:05:57,740 vale 123 00:05:57,740 --> 00:06:01,540 esto es como en Alcohólicos Anónimos 124 00:06:01,540 --> 00:06:02,620 se van a ir presentando así 125 00:06:02,620 --> 00:06:05,779 hola, soy Pepito 126 00:06:05,779 --> 00:06:07,160 pues igual, es una aplicación 127 00:06:07,160 --> 00:06:09,939 en Alcohólicos Anónimos han sido muchos años 128 00:06:09,939 --> 00:06:10,360 allí 129 00:06:10,360 --> 00:06:26,839 Ostras, pues no está mal pensado 130 00:06:26,839 --> 00:06:29,759 A ver, entre una y otra 131 00:06:29,759 --> 00:06:31,139 me lo pones difícil, pero casi 132 00:06:31,139 --> 00:06:34,480 A ver, si tengo que elegir 133 00:06:34,480 --> 00:06:35,240 me lo pones difícil 134 00:06:35,240 --> 00:06:37,319 pero casi elijo el cristianismo 135 00:06:37,319 --> 00:06:44,019 es difícil pero yo elijo esa 136 00:06:44,019 --> 00:06:45,800 vale 137 00:06:45,800 --> 00:06:47,720 venga 138 00:06:47,720 --> 00:06:49,540 pues ya está, saludan 139 00:06:49,540 --> 00:06:51,579 vale, pues entonces vamos a meter aquí a nuestros 140 00:06:51,579 --> 00:06:52,600 elementos 141 00:06:52,600 --> 00:06:54,480 entonces 142 00:06:54,480 --> 00:06:57,480 clave, hemos dicho que el nif 143 00:06:57,480 --> 00:06:59,959 el nif, un stream 144 00:06:59,959 --> 00:07:01,920 valor 145 00:07:01,920 --> 00:07:03,259 elemento, la persona 146 00:07:03,259 --> 00:07:04,959 pues ya está 147 00:07:04,959 --> 00:07:09,160 pues porque 148 00:07:09,160 --> 00:07:12,360 a mi aplicación le viene bien distinguir por nif 149 00:07:12,360 --> 00:07:14,139 porque el nif es un dato de la aplicación 150 00:07:14,139 --> 00:07:15,579 es el dato que me va a dar el usuario 151 00:07:15,579 --> 00:07:17,480 y el nif es un string 152 00:07:17,480 --> 00:07:20,379 y ahora aquí es donde yo ya 153 00:07:20,379 --> 00:07:22,079 decido que quiero que sea un hash map 154 00:07:22,079 --> 00:07:24,579 un trimap, vamos a decirle un trimap 155 00:07:24,579 --> 00:07:26,220 para perderle miedo a los árboles 156 00:07:26,220 --> 00:07:27,420 no pasa nada 157 00:07:27,420 --> 00:07:34,620 ya, ya, ya 158 00:07:34,620 --> 00:07:36,079 que me estás regañando 159 00:07:36,079 --> 00:07:38,620 que sí, que sí 160 00:07:38,620 --> 00:07:39,620 que se me ha olvidado 161 00:07:39,620 --> 00:07:41,100 se me ha olvidado 162 00:07:41,100 --> 00:07:47,139 vamos, en un examen 163 00:07:47,139 --> 00:07:48,899 me plantáis eso ahí sin el main en medio 164 00:07:48,899 --> 00:07:52,660 y vamos 165 00:07:52,660 --> 00:07:54,980 me pongo como una fiera 166 00:07:54,980 --> 00:07:56,740 pues voy abriendo las llaves del main 167 00:07:56,740 --> 00:07:57,639 que no se ha abierto 168 00:07:57,639 --> 00:08:09,160 venga, pues el map lo importamos 169 00:08:09,160 --> 00:08:12,819 vale, pues entonces 170 00:08:12,819 --> 00:08:14,319 desde el momento en que yo he elegido 171 00:08:14,319 --> 00:08:15,779 trimap 172 00:08:15,779 --> 00:08:18,579 lo único que me viene a la cabeza 173 00:08:18,579 --> 00:08:20,300 es, ojo 174 00:08:20,300 --> 00:08:21,540 que entonces 175 00:08:21,540 --> 00:08:26,079 ¿Trimap no habría que hacer 176 00:08:26,079 --> 00:08:27,139 como el método para...? 177 00:08:27,139 --> 00:08:27,579 ¿Pero dónde? 178 00:08:27,579 --> 00:08:28,420 ¿El comparable? 179 00:08:28,980 --> 00:08:29,779 El comparable. 180 00:08:31,939 --> 00:08:32,500 No. 181 00:08:33,360 --> 00:08:35,840 Trimap significa que las claves 182 00:08:35,840 --> 00:08:37,559 se guardan en un triset. 183 00:08:38,000 --> 00:08:39,519 Las claves, no los valores. 184 00:08:39,759 --> 00:08:40,019 Es verdad. 185 00:08:40,960 --> 00:08:43,840 Y HashMap significa que las claves 186 00:08:43,840 --> 00:08:44,799 se guardan en un hashet. 187 00:08:45,179 --> 00:08:47,519 Luego, Trimap, si yo he seleccionado Trimap 188 00:08:47,519 --> 00:08:48,980 porque es muy eficiente por dentro, 189 00:08:49,620 --> 00:08:51,279 se supone, pues entonces 190 00:08:51,279 --> 00:08:53,740 me voy corriendo a la clase de las claves 191 00:08:53,740 --> 00:08:55,539 y digo, ¿esta es 192 00:08:55,539 --> 00:08:57,320 comparable? Hombre, por supuesto 193 00:08:57,320 --> 00:08:59,379 no va a ser comparable, que dice String no sería tan 194 00:08:59,379 --> 00:09:01,460 cutre de no hacer 195 00:09:01,460 --> 00:09:03,220 la que implementa la comparable, claro 196 00:09:03,220 --> 00:09:05,419 implementa comparable, tiene un 197 00:09:05,419 --> 00:09:07,279 compare to por ahí abajo en algún lado 198 00:09:07,279 --> 00:09:08,919 pues me despreocupo 199 00:09:08,919 --> 00:09:12,080 Claro 200 00:09:12,080 --> 00:09:15,580 ¿Qué le pasa a este? 201 00:09:21,279 --> 00:09:24,919 alguno habrá habido 202 00:09:24,919 --> 00:09:26,460 que haya tenido tentaciones 203 00:09:26,460 --> 00:09:29,799 bueno pues ya está 204 00:09:29,799 --> 00:09:30,639 y ahora 205 00:09:30,639 --> 00:09:32,419 y ahora aquí ya 206 00:09:32,419 --> 00:09:34,620 que me pide este que haga 207 00:09:34,620 --> 00:09:36,179 vamos a hacer lo que nos dé la gana hacer 208 00:09:36,179 --> 00:09:39,399 vamos a insertar 209 00:09:39,399 --> 00:09:41,460 personas, vamos a estar en un 210 00:09:41,460 --> 00:09:43,399 en un bucle localizando 211 00:09:43,399 --> 00:09:44,940 personas, vamos a hacer cosas 212 00:09:44,940 --> 00:09:46,120 porque esto que nos pide 213 00:09:46,120 --> 00:09:47,960 bucles 214 00:09:47,960 --> 00:09:51,220 para introducción 215 00:09:51,220 --> 00:09:52,340 de muestra del NIF. 216 00:09:53,440 --> 00:09:54,139 Vale, pues venga. 217 00:09:55,200 --> 00:09:57,440 Vamos, antes que nada, a meterle personas 218 00:09:57,440 --> 00:09:59,480 al este. Y vamos a iterar 219 00:09:59,480 --> 00:10:01,340 para que saluden. Ahí vamos a ver la iteración. 220 00:10:02,039 --> 00:10:03,259 Y luego ya vamos a ver la parte 221 00:10:03,259 --> 00:10:05,179 esta de pedir nombres y que te diga 222 00:10:05,179 --> 00:10:06,259 cuántas hay con ese nombre. 223 00:10:07,320 --> 00:10:08,139 Pues hala, venga. 224 00:10:09,960 --> 00:10:11,460 Vamos a añadir personas. 225 00:10:15,100 --> 00:10:16,840 Venga, vamos a añadir 226 00:10:16,840 --> 00:10:19,720 10 personitas. 227 00:10:24,259 --> 00:10:39,210 pues personas 228 00:10:39,210 --> 00:10:40,470 punto put 229 00:10:40,470 --> 00:10:45,080 el nif lo vamos a construir 230 00:10:45,080 --> 00:10:46,639 pues un, dos, tres, cuatro 231 00:10:46,639 --> 00:10:49,460 concatenado con un guión 232 00:10:49,460 --> 00:10:50,860 y 233 00:10:50,860 --> 00:10:52,519 el i este de aquí 234 00:10:52,519 --> 00:10:54,759 venga, vamos a construir el nif así 235 00:10:54,759 --> 00:10:55,620 para que sea distinto 236 00:10:55,620 --> 00:10:57,379 y las personas 237 00:10:57,379 --> 00:10:59,539 pues yo que sé 238 00:10:59,539 --> 00:11:02,700 una persona con cualquier 239 00:11:02,700 --> 00:11:03,820 nombre, ya está 240 00:11:03,820 --> 00:11:10,139 para que los nips sean distintos 241 00:11:10,139 --> 00:11:12,059 porque las claves tienen que ser distintas 242 00:11:12,059 --> 00:11:13,679 de todas formas vamos a 243 00:11:13,679 --> 00:11:14,860 en lugar de 10 244 00:11:14,860 --> 00:11:17,899 vamos a poner menos y vamos a meterlo por teclado 245 00:11:17,899 --> 00:11:19,779 es que si no esto queda más feo que yo que sé 246 00:11:19,779 --> 00:11:21,340 entonces 247 00:11:21,340 --> 00:11:23,899 vamos a new persona 248 00:11:23,899 --> 00:11:24,840 y le ponemos 249 00:11:24,840 --> 00:11:27,879 el nombre y la edad leídas por teclado 250 00:11:27,879 --> 00:11:31,580 leer punto cadena 251 00:11:31,580 --> 00:11:33,100 y ahora 252 00:11:33,100 --> 00:11:37,200 leer.edad 253 00:11:37,200 --> 00:11:42,899 y le decimos aquí 254 00:11:42,899 --> 00:11:49,870 que nombre y edad 255 00:11:49,870 --> 00:11:54,250 vale, y ahora tenemos que meter 256 00:11:54,250 --> 00:11:56,289 y persona, ¿qué pasa? que no tenía un constructor 257 00:11:56,289 --> 00:12:00,210 nombre y edad, sí que está el constructor 258 00:12:00,210 --> 00:12:02,210 entonces, ¿por qué no me deja? 259 00:12:02,210 --> 00:12:08,809 new persona 260 00:12:08,809 --> 00:12:10,450 leer cadena, leer entero 261 00:12:10,450 --> 00:12:14,909 este punto y coma está aquí 262 00:12:14,909 --> 00:12:15,450 muy raro 263 00:12:15,450 --> 00:12:16,909 vale 264 00:12:16,909 --> 00:12:20,929 pues ya está, un bucle, 10 no porque son muchas 265 00:12:20,929 --> 00:12:22,830 vamos a poner 3 266 00:12:22,830 --> 00:12:23,470 vale 267 00:12:23,470 --> 00:12:26,509 y ahora ya está 268 00:12:26,509 --> 00:12:28,529 vale, pues ya está, he metido 269 00:12:28,529 --> 00:12:30,850 3 personas, recordad 270 00:12:30,850 --> 00:12:31,429 el put 271 00:12:31,429 --> 00:12:34,230 si yo repitiera una clave 272 00:12:34,230 --> 00:12:36,509 no se metería a esa persona 273 00:12:36,509 --> 00:12:38,929 sino que se sobreescribiría 274 00:12:38,929 --> 00:12:40,610 en la persona con ese nif 275 00:12:40,610 --> 00:12:42,210 el valor nuevo, ya está 276 00:12:42,210 --> 00:12:44,549 vale, eso mismo 277 00:12:44,549 --> 00:12:45,809 y 278 00:12:45,809 --> 00:12:48,789 y me falta aquí una llave 279 00:12:48,789 --> 00:12:50,610 vale, pues ahora vamos a iterar 280 00:12:50,610 --> 00:12:52,230 vamos a iterar por el map 281 00:12:52,230 --> 00:12:54,450 vale, aquí no hay un for each que valga 282 00:12:54,450 --> 00:12:56,769 aquí no hay un for each porque esto no es 283 00:12:56,769 --> 00:12:58,330 una sola, en el for each 284 00:12:58,330 --> 00:13:00,610 siempre ponemos, para el tipo 285 00:13:00,610 --> 00:13:01,429 que sea 286 00:13:01,429 --> 00:13:04,490 en la colección no sé qué 287 00:13:04,490 --> 00:13:06,250 pero claro, es que el tipo 288 00:13:06,250 --> 00:13:08,210 aquí cuál es, es string, es persona 289 00:13:08,210 --> 00:13:09,590 tengo dos cosas, son pares 290 00:13:09,590 --> 00:13:11,610 entonces no puedo iterar por un for each 291 00:13:11,610 --> 00:13:14,330 tengo que convertirlo a hacer algo 292 00:13:14,330 --> 00:13:16,429 para que pueda ya iterar por un for each 293 00:13:16,429 --> 00:13:17,769 en un único tipo 294 00:13:17,769 --> 00:13:19,169 sea string, sea persona 295 00:13:19,169 --> 00:13:22,129 bueno, pues tenemos dos posibilidades interesantes 296 00:13:22,129 --> 00:13:24,409 que nos vienen dadas 297 00:13:24,409 --> 00:13:25,570 a través de los métodos de map 298 00:13:25,570 --> 00:13:27,330 entonces si miramos a ver 299 00:13:27,330 --> 00:13:30,490 los métodos 300 00:13:30,490 --> 00:13:31,710 de map 301 00:13:31,710 --> 00:13:34,649 vamos a coger personas 302 00:13:34,649 --> 00:13:36,769 y tiene, por ejemplo 303 00:13:36,769 --> 00:13:38,649 vale, bueno 304 00:13:38,649 --> 00:13:40,330 clear, que es borrar entero 305 00:13:40,330 --> 00:13:42,649 contains key, me devuelve 306 00:13:42,649 --> 00:13:44,529 true o false, si existe algún 307 00:13:44,529 --> 00:13:46,169 par con esta clave, vale 308 00:13:46,169 --> 00:13:48,809 contains value, me devuelve un true o false 309 00:13:48,809 --> 00:13:50,529 si existe algún 310 00:13:50,529 --> 00:13:52,610 valor, alguna persona igual a 311 00:13:52,610 --> 00:13:54,570 esta, igual a esta según 312 00:13:54,570 --> 00:13:56,450 el equals, que no tenemos puesto 313 00:13:56,450 --> 00:13:58,289 el equals, en triset 314 00:13:58,289 --> 00:14:01,389 ahora mismo vamos a dejarlo porque es la segunda forma de iterar 315 00:14:01,389 --> 00:14:02,830 me devuelve una cosa rarísima 316 00:14:02,830 --> 00:14:05,129 set entry bla bla bla, ahora la desentrañamos 317 00:14:05,129 --> 00:14:07,210 vale, get 318 00:14:07,210 --> 00:14:09,049 me devuelve el objeto 319 00:14:09,049 --> 00:14:10,110 con esa clave 320 00:14:10,110 --> 00:14:12,690 tiene métodos que están muy bien 321 00:14:12,690 --> 00:14:14,450 isemptis y está vacía 322 00:14:14,450 --> 00:14:16,370 key set, vale 323 00:14:16,370 --> 00:14:19,490 key set me devuelve un conjunto 324 00:14:19,490 --> 00:14:20,990 solo con las claves 325 00:14:20,990 --> 00:14:23,149 vale, pues es la forma más fácil 326 00:14:23,149 --> 00:14:25,629 cojo un conjunto por las claves 327 00:14:25,629 --> 00:14:27,009 y ahora ya hay cero por las claves 328 00:14:27,009 --> 00:14:28,830 Y para cada clave cojo el valor con get 329 00:14:28,830 --> 00:14:31,409 Pues ya está 330 00:14:31,409 --> 00:14:33,809 Esa sería una de las maneras más sencillas de iterar 331 00:14:33,809 --> 00:14:34,590 Que sería 332 00:14:34,590 --> 00:14:38,389 Me hago yo un conjunto con las claves 333 00:14:38,389 --> 00:14:39,909 Eso lo puedes guardar en cualquier cosa 334 00:14:39,909 --> 00:14:40,789 En un set 335 00:14:40,789 --> 00:14:42,990 En un set de enteros 336 00:14:42,990 --> 00:14:43,929 Perdón, de string 337 00:14:43,929 --> 00:14:45,990 Porque las claves son string en este caso 338 00:14:45,990 --> 00:14:48,389 Tiene que ser un set 339 00:14:48,389 --> 00:14:51,090 Sí, tiene que ser un set 340 00:14:51,090 --> 00:14:52,389 Porque xset te da el 341 00:14:52,389 --> 00:14:54,049 Vale 342 00:14:54,049 --> 00:14:56,450 Las claves 343 00:14:56,450 --> 00:15:00,080 pues ya está 344 00:15:00,080 --> 00:15:04,500 tengo un set con las claves 345 00:15:04,500 --> 00:15:06,659 que me lo devuelve el método 346 00:15:06,659 --> 00:15:09,000 keySet y ahora ya como esto es un set 347 00:15:09,000 --> 00:15:10,059 ya sí que puedo iterar 348 00:15:10,059 --> 00:15:13,039 y ahora para cada clave de tipo 349 00:15:13,039 --> 00:15:15,159 string, para cada clave 350 00:15:15,159 --> 00:15:16,779 que está en todas las claves 351 00:15:16,779 --> 00:15:18,600 ahora ya 352 00:15:18,600 --> 00:15:20,840 sí que podemos sacar el objeto con esa clave 353 00:15:20,840 --> 00:15:22,440 entonces ¿cómo sacamos un objeto 354 00:15:22,440 --> 00:15:24,620 de una clave determinada de un map? 355 00:15:25,059 --> 00:15:26,139 pues con el método get 356 00:15:26,139 --> 00:15:29,139 el método get, le pasamos la clave 357 00:15:29,139 --> 00:15:32,269 y me devuelve 358 00:15:32,269 --> 00:15:33,250 el objeto persona 359 00:15:33,250 --> 00:15:36,009 y ahora con este objeto persona 360 00:15:36,009 --> 00:15:38,289 pues en este caso, ¿qué vamos a hacer? pues saludar 361 00:15:38,289 --> 00:15:39,789 pero podríamos hacer cualquier otra cosa 362 00:15:39,789 --> 00:15:42,110 lo que está claro es que este es 363 00:15:42,110 --> 00:15:43,710 mi objeto persona con esa clave 364 00:15:43,710 --> 00:15:46,490 lo puedo guardar en una variable 365 00:15:46,490 --> 00:15:47,870 hacer con ella lo que quiera 366 00:15:47,870 --> 00:15:48,389 pues ya está 367 00:15:48,389 --> 00:15:54,309 no, no, no, porque tú aquí 368 00:15:54,309 --> 00:15:55,009 borras por clave 369 00:15:55,009 --> 00:15:57,690 Claro, tú aquí remove y le pasas la clave 370 00:15:57,690 --> 00:15:59,009 ¿Vale? Borras por clan 371 00:15:59,009 --> 00:16:00,409 Entonces 372 00:16:00,409 --> 00:16:03,789 Y ya está 373 00:16:03,789 --> 00:16:04,870 Entonces si ejecutamos 374 00:16:04,870 --> 00:16:07,070 Esto, pues esto 375 00:16:07,070 --> 00:16:08,129 Nos 376 00:16:08,129 --> 00:16:10,529 Saludarán los tres 377 00:16:10,529 --> 00:16:14,669 Vale, pues el primer nombre 378 00:16:14,669 --> 00:16:17,809 Pepe con cuatro años 379 00:16:17,809 --> 00:16:19,309 El segundo nombre 380 00:16:19,309 --> 00:16:20,649 Juan con nueve 381 00:16:20,649 --> 00:16:23,409 Y el tercero Ana con doce 382 00:16:23,409 --> 00:16:24,809 Pues ya está 383 00:16:24,809 --> 00:16:26,649 ¿Vale? Aquí están todos 384 00:16:26,649 --> 00:16:39,809 vale 385 00:16:39,809 --> 00:16:45,110 vamos a dejar para después del récord la otra 386 00:16:45,110 --> 00:16:46,789 iteración, vamos a ver 387 00:16:46,789 --> 00:16:48,929 que queremos ver aquí por ejemplo 388 00:16:48,929 --> 00:16:51,110 cuántas personas 389 00:16:51,110 --> 00:16:53,230 de este set se llaman 390 00:16:53,230 --> 00:16:54,950 Ana para que nos digan sus NIF 391 00:16:54,950 --> 00:16:57,409 vale 392 00:16:57,409 --> 00:17:00,230 es decir, le vamos a decir 393 00:17:00,230 --> 00:17:01,730 en este main, dame un nombre 394 00:17:01,730 --> 00:17:07,700 dame un nombre 395 00:17:07,700 --> 00:17:12,000 y ahora leemos el nombre 396 00:17:12,000 --> 00:17:13,660 de la persona 397 00:17:13,660 --> 00:17:20,230 vale, y ahora queremos que 398 00:17:20,230 --> 00:17:22,190 el ejercicio, ahora queremos que lo que 399 00:17:22,190 --> 00:17:24,309 nos haga es iterar por el 400 00:17:24,309 --> 00:17:26,190 map para encontrar todos 401 00:17:26,190 --> 00:17:27,809 los elementos cuyo nombre 402 00:17:27,809 --> 00:17:30,170 sea igual que este y me 403 00:17:30,170 --> 00:17:31,869 muestre el nif de cada uno de ellos 404 00:17:31,869 --> 00:17:33,970 a ver cuantos nifs hay para el mismo nombre 405 00:17:33,970 --> 00:17:36,170 por ejemplo, que es justo lo que me pide 406 00:17:36,170 --> 00:17:37,470 el ejercicio, me pide esto 407 00:17:37,470 --> 00:17:39,690 lo que pasa es que lo único que me añade 408 00:17:39,690 --> 00:17:41,529 es que me meta esto en un bucle que esté todo el rato 409 00:17:41,529 --> 00:17:43,150 haciéndolo, pide nombre, pide nombre, pide nombre 410 00:17:43,150 --> 00:17:45,410 hasta que tú le pongas fin, pero esto es lo que te pide 411 00:17:45,410 --> 00:17:47,349 metido en un bucle 412 00:17:47,349 --> 00:17:49,049 pues ahora ya tenemos que recorrer el map 413 00:17:49,049 --> 00:17:51,509 pues ya tengo 414 00:17:51,509 --> 00:17:53,589 este keyset sacado 415 00:17:53,589 --> 00:17:55,930 pues venga, voy a recorrer 416 00:17:55,930 --> 00:17:59,099 las claves 417 00:17:59,099 --> 00:18:01,200 y ahora ya, pues por ejemplo 418 00:18:01,200 --> 00:18:03,180 para dejarlo claro, vamos a sacar el objeto 419 00:18:03,180 --> 00:18:05,559 persona con esa clave 420 00:18:05,559 --> 00:18:07,200 mi persona 421 00:18:07,200 --> 00:18:09,079 p va a ser igual a 422 00:18:09,079 --> 00:18:11,779 personas.get 423 00:18:11,779 --> 00:18:12,660 con esa clave 424 00:18:12,660 --> 00:18:14,460 clave 425 00:18:14,460 --> 00:18:15,779 y ahora 426 00:18:15,779 --> 00:18:18,980 que esta persona 427 00:18:18,980 --> 00:18:21,160 resulta 428 00:18:21,160 --> 00:18:21,900 que p 429 00:18:21,900 --> 00:18:23,720 su nombre 430 00:18:23,720 --> 00:18:27,200 resulta que es 431 00:18:27,200 --> 00:18:29,420 igual al que me han dicho 432 00:18:29,420 --> 00:18:32,640 pues entonces 433 00:18:32,640 --> 00:18:33,380 vale 434 00:18:33,380 --> 00:18:35,640 entonces necesito 435 00:18:35,640 --> 00:18:38,039 ahora la clave 436 00:18:38,039 --> 00:18:39,240 de este 437 00:18:39,240 --> 00:18:41,759 Vale 438 00:18:41,759 --> 00:18:44,079 O sea, lo que necesito es que la tengo aquí 439 00:18:44,079 --> 00:18:45,700 Lo único que tengo que mostrar es la clave 440 00:18:45,700 --> 00:18:48,759 Vale, pues entonces de hecho aquí las llaves 441 00:18:48,759 --> 00:18:51,880 Pues es este 442 00:18:51,880 --> 00:18:58,539 El need 443 00:18:58,539 --> 00:18:59,460 Is 444 00:18:59,460 --> 00:19:01,680 Y ya está 445 00:19:01,680 --> 00:19:02,839 Clave 446 00:19:02,839 --> 00:19:08,180 Pues esta es una forma de iterar, cojo las claves 447 00:19:08,180 --> 00:19:09,440 E itero 448 00:19:09,440 --> 00:19:11,579 Por todos los objetos 449 00:19:11,579 --> 00:19:14,119 Que se corresponden a todas 450 00:19:14,119 --> 00:19:15,960 y cada una de las claves y ya con ello 451 00:19:15,960 --> 00:19:17,099 puedo construir o hacer lo que sea 452 00:19:17,099 --> 00:19:20,259 vale, y si damos 453 00:19:20,259 --> 00:19:21,839 aquí, pues 2 454 00:19:21,839 --> 00:19:23,680 por ejemplo vamos a meter 455 00:19:23,680 --> 00:19:28,140 a Ana que tiene 12 456 00:19:28,140 --> 00:19:30,299 vamos a meter a Ana 457 00:19:30,299 --> 00:19:31,980 otra vez que tiene 458 00:19:31,980 --> 00:19:34,779 45 459 00:19:34,779 --> 00:19:37,980 toma ya, ala 460 00:19:37,980 --> 00:19:39,420 la has cagado 461 00:19:39,420 --> 00:19:42,099 y ahora vamos a meter a Juan 462 00:19:42,099 --> 00:19:44,099 que tiene 54 463 00:19:44,099 --> 00:19:46,279 Están aquí 464 00:19:46,279 --> 00:19:47,619 Ana 465 00:19:47,619 --> 00:19:50,980 12, Ana 45 y Juan 54 466 00:19:50,980 --> 00:19:52,819 Vamos ahora 467 00:19:52,819 --> 00:19:54,480 A buscar cuantos 468 00:19:54,480 --> 00:19:56,460 Anas hay 469 00:19:56,460 --> 00:19:58,240 Pues hay dos anas 470 00:19:58,240 --> 00:19:59,720 Con los dos nif 471 00:19:59,720 --> 00:20:00,799 Este y este 472 00:20:00,799 --> 00:20:02,240 Vale 473 00:20:02,240 --> 00:20:11,380 Vale, pues esta forma de iterar 474 00:20:11,380 --> 00:20:12,579 Nos puede ser útil a veces 475 00:20:12,579 --> 00:20:15,799 Vale 476 00:20:15,799 --> 00:20:17,960 Pero tenemos que ver la otra 477 00:20:17,960 --> 00:20:19,559 La de ese entry set 478 00:20:19,559 --> 00:20:22,880 y eso queda para después del recreo