1 00:00:00,500 --> 00:00:19,980 Bueno, pues entonces, si uno arranca con el primer método, datos, pues nada, ese es el más sencillo, insertar alumno, insertar alumno es insertar en el map, entonces nos situamos para insertar un par en un map, pues el método put, pues ya está, alumnos put, ¿qué necesitamos? 2 00:00:19,980 --> 00:00:21,739 la clave que es el 3 00:00:21,739 --> 00:00:23,579 nif y el objeto alumno 4 00:00:23,579 --> 00:00:25,640 pues nada, instanciamos el objeto 5 00:00:25,640 --> 00:00:27,519 alumno y ya está, instanciamos 6 00:00:27,519 --> 00:00:29,559 el objeto alumno con la clave 7 00:00:29,559 --> 00:00:31,480 y sería esto, en este caso 8 00:00:31,480 --> 00:00:33,640 sin verificar nada más 9 00:00:33,640 --> 00:00:35,380 este método no verifica nada 10 00:00:35,380 --> 00:00:37,600 yo aquí como la excepción además 11 00:00:37,600 --> 00:00:39,560 la había dejado antes como 12 00:00:39,560 --> 00:00:40,340 runtime exception 13 00:00:40,340 --> 00:00:43,600 aquí no me sale ningún error de compilación 14 00:00:43,600 --> 00:00:45,659 si esta excepción 15 00:00:45,659 --> 00:00:46,859 fuera así 16 00:00:46,859 --> 00:00:49,579 si esta excepción fuera así 17 00:00:49,579 --> 00:00:51,799 automáticamente este método 18 00:00:51,799 --> 00:00:53,840 me diría, uy, cuidado que al meter 19 00:00:53,840 --> 00:00:55,119 un nuevo alumno en el map 20 00:00:55,119 --> 00:00:57,880 puede que te salga 21 00:00:57,880 --> 00:00:59,579 la excepción de que el año es negativo 22 00:00:59,579 --> 00:01:01,820 cuidado, entonces pues aquí 23 00:01:01,820 --> 00:01:03,039 haría un try catch 24 00:01:03,039 --> 00:01:07,620 si quiero 25 00:01:07,620 --> 00:01:09,700 hago el throw, lo que sea, lo que me pidan 26 00:01:09,700 --> 00:01:10,920 lo que me pidan 27 00:01:10,920 --> 00:01:13,700 pero vamos, lo que importa es 28 00:01:13,700 --> 00:01:15,620 entender que como este método generaba 29 00:01:15,620 --> 00:01:17,519 una excepción, si es de tipo 30 00:01:17,519 --> 00:01:19,939 exception, aquí me veo en la obligación 31 00:01:19,939 --> 00:01:21,200 de decidir qué hacer con ella 32 00:01:21,200 --> 00:01:23,680 decidir si hay excepción, si quiero que 33 00:01:23,680 --> 00:01:25,980 la propague al de arriba o la capturo 34 00:01:25,980 --> 00:01:26,900 y en ese caso 35 00:01:26,900 --> 00:01:31,200 pues aviso 36 00:01:31,200 --> 00:01:33,640 no se ha podido, muestro 37 00:01:33,640 --> 00:01:35,680 un mensaje por consola, no se ha podido meter en el 38 00:01:35,680 --> 00:01:37,579 map, para que el usuario que llama al 39 00:01:37,579 --> 00:01:39,400 método pues lo sepa, lo que sea 40 00:01:39,400 --> 00:01:41,700 pero bueno, para no tener que arrastrar 41 00:01:41,700 --> 00:01:43,680 ese error, le voy a poner el run time 42 00:01:43,680 --> 00:01:47,730 este, y así ya 43 00:01:47,730 --> 00:01:49,709 Pues nada, insertar sería esto 44 00:01:49,709 --> 00:01:50,810 Nada más 45 00:01:50,810 --> 00:01:52,870 Inserto la clave y el objeto 46 00:01:52,870 --> 00:01:54,650 Y ya está 47 00:01:54,650 --> 00:01:56,370 ¿Vale? 48 00:01:57,709 --> 00:01:59,790 Es que luego que me han metido un número negativo 49 00:01:59,790 --> 00:02:01,390 Va a ser una excepción en tiempo de ejecución 50 00:02:01,390 --> 00:02:02,950 Va a ser una excepción en tiempo de ejecución 51 00:02:02,950 --> 00:02:05,549 Bueno, pues entonces 52 00:02:05,549 --> 00:02:06,489 Añadir nota 53 00:02:06,489 --> 00:02:08,870 Bueno, pues añadir nota tenemos que 54 00:02:08,870 --> 00:02:11,530 La ventaja del map es que ahora es 55 00:02:11,530 --> 00:02:12,689 Facilísimo operar 56 00:02:12,689 --> 00:02:15,509 Si en lugar de estar los alumnos en un map 57 00:02:15,509 --> 00:02:17,430 Estuvieran en un set 58 00:02:17,430 --> 00:02:20,509 de alumnos y dentro del objeto alumno 59 00:02:20,509 --> 00:02:21,430 tuviéramos el nif 60 00:02:21,430 --> 00:02:24,969 pues entonces tendríamos que de esa colección 61 00:02:24,969 --> 00:02:26,669 sacar el objeto 62 00:02:26,669 --> 00:02:28,430 correspondiente iterando por ella 63 00:02:28,430 --> 00:02:30,569 etcétera, pero es que aquí no hace falta 64 00:02:30,569 --> 00:02:32,610 porque ya tenemos el método get que yo cojo 65 00:02:32,610 --> 00:02:34,650 el map, le digo sácame 66 00:02:34,650 --> 00:02:36,669 el objeto con esta clave 67 00:02:36,669 --> 00:02:38,650 sácame el objeto con esta 68 00:02:38,650 --> 00:02:40,610 clave, muy bien, ya tenemos el objeto con esa 69 00:02:40,610 --> 00:02:41,889 clave, es mucho más sencillo que 70 00:02:41,889 --> 00:02:43,789 encontrar en una colección 71 00:02:43,789 --> 00:02:46,310 un objeto cuya propiedad es tal 72 00:02:46,310 --> 00:02:47,830 es mucho más fácil 73 00:02:47,830 --> 00:02:50,229 bueno, pues el alumno con ese nif 74 00:02:50,229 --> 00:02:52,289 saca sus notas 75 00:02:52,289 --> 00:02:54,270 y a su nota añade la nueva 76 00:02:54,270 --> 00:02:55,330 y ya está 77 00:02:55,330 --> 00:02:57,909 aquí lo único es que claro 78 00:02:57,909 --> 00:02:59,009 que estas notas 79 00:02:59,009 --> 00:03:02,990 si el alumno está recién creado 80 00:03:02,990 --> 00:03:04,150 y su colección es null 81 00:03:04,150 --> 00:03:06,050 me va a dar null pointer exception 82 00:03:06,050 --> 00:03:07,969 pero claro, eso me di cuenta 83 00:03:07,969 --> 00:03:08,930 la primera vez que lo pruebo 84 00:03:08,930 --> 00:03:10,830 y decimos, ah, cuidado, espera, espérate 85 00:03:10,830 --> 00:03:13,830 en la propiedad notas de alumno 86 00:03:13,830 --> 00:03:15,150 vamos a inicializarla 87 00:03:15,150 --> 00:03:19,110 con una colección vacía, pero no nula, vacía, 88 00:03:19,229 --> 00:03:21,270 para que el alumno recién creado no tenga notas, 89 00:03:21,930 --> 00:03:23,449 pero al menos la colección no sea vacía. 90 00:03:24,289 --> 00:03:27,310 Y así ya nos ahorramos que cuando yo haga el getNotas, 91 00:03:28,069 --> 00:03:29,389 esto ya nunca va a ser nul. 92 00:03:29,509 --> 00:03:31,490 Puede ser una colección vacía, pero nunca nul. 93 00:03:32,509 --> 00:03:34,949 Entonces, ¿que yo le meto la primera de las notas? 94 00:03:35,050 --> 00:03:36,189 Pues ya está, la primera. 95 00:03:36,590 --> 00:03:38,370 ¿Que no es la primera, sino que es la siguiente? 96 00:03:38,370 --> 00:03:40,469 Pues la siguiente. Esto va a funcionar siempre. 97 00:03:42,069 --> 00:03:44,969 De nuevo, este método hay una cosa que no está verificando. 98 00:03:45,150 --> 00:03:47,969 que no existe un alumno con este nif 99 00:03:47,969 --> 00:03:49,569 porque si no existe 100 00:03:49,569 --> 00:03:51,870 alumno con ese nif, el get nif 101 00:03:51,870 --> 00:03:52,469 me va a dar null 102 00:03:52,469 --> 00:03:55,430 y entonces aquí me saldría un null pointer exception 103 00:03:55,430 --> 00:03:57,430 entonces este método 104 00:03:57,430 --> 00:03:59,610 podríamos hacer una verificación 105 00:03:59,610 --> 00:04:01,610 que fuera, if alumnos 106 00:04:01,610 --> 00:04:03,770 get nif es diferente de null 107 00:04:03,770 --> 00:04:05,650 entonces ahora 108 00:04:05,650 --> 00:04:07,409 ya sí, haz esto 109 00:04:07,409 --> 00:04:09,889 y si no, pues no hagas nada 110 00:04:09,889 --> 00:04:11,669 muestras un mensajito, el alumno con ese nif 111 00:04:11,669 --> 00:04:13,449 no existe, con lo cual no le puedo añadir la nota 112 00:04:13,449 --> 00:04:14,629 lo que sea 113 00:04:14,629 --> 00:04:16,149 vale 114 00:04:16,149 --> 00:04:21,180 pues entonces, si yo no quiero verificar nada 115 00:04:21,180 --> 00:04:23,579 y simplemente, si el alumno no existe 116 00:04:23,579 --> 00:04:25,240 null pointer exception y ya está 117 00:04:25,240 --> 00:04:27,839 pues esta línea sería suficiente 118 00:04:27,839 --> 00:04:29,660 pero si no quiero que salga 119 00:04:29,660 --> 00:04:31,860 un null pointer exception, pues tendría que hacer 120 00:04:31,860 --> 00:04:32,560 pues eso 121 00:04:32,560 --> 00:04:33,540 ¿no? 122 00:04:33,540 --> 00:04:35,120 en ese método no habría notas 123 00:04:35,120 --> 00:04:44,370 en la lista de notas 124 00:04:44,370 --> 00:04:47,009 pero ¿para qué? 125 00:04:47,750 --> 00:04:49,589 para hacer notas 126 00:04:49,589 --> 00:04:51,449 pero ¿para qué le quieres pasar 127 00:04:51,449 --> 00:04:53,649 lista de notas, es que le complicas 128 00:04:53,649 --> 00:04:55,550 la vida al que te está llamando 129 00:04:55,550 --> 00:04:57,550 porque entonces el que te está llamando antes de llamarte 130 00:04:57,550 --> 00:04:59,689 a ti tiene que irse al map, sacar la lista 131 00:04:59,689 --> 00:05:01,529 de notas del alumno, entonces para eso ya que 132 00:05:01,529 --> 00:05:03,410 la tiene, la añade 133 00:05:03,410 --> 00:05:04,149 él directamente 134 00:05:04,149 --> 00:05:06,850 no tiene sentido hacer un método 135 00:05:06,850 --> 00:05:08,889 para añadir notas a una lista 136 00:05:08,889 --> 00:05:11,550 y a ese método le pasas tú la lista 137 00:05:11,550 --> 00:05:13,509 es que entonces ya en el principal te haces 138 00:05:13,509 --> 00:05:15,069 tu NAT en esa lista y ya está 139 00:05:15,069 --> 00:05:17,509 entonces este método es útil si tú 140 00:05:17,509 --> 00:05:19,589 dices, tengo este GIF y tengo esta 141 00:05:19,589 --> 00:05:21,129 nota, añádemelo 142 00:05:21,129 --> 00:05:24,370 y ya está, porque si tienes que pasar tú la lista 143 00:05:24,370 --> 00:05:25,949 antes de llamarlo tienes que 144 00:05:25,949 --> 00:05:27,910 buscarla, encontrarla, pues ya para eso 145 00:05:27,910 --> 00:05:28,449 haces tu ELA 146 00:05:28,449 --> 00:05:32,029 entonces le pasas NIF y nota 147 00:05:32,029 --> 00:05:34,129 que es lo que tú piensas 148 00:05:34,129 --> 00:05:35,910 lo que va a 149 00:05:35,910 --> 00:05:37,949 necesitar pasar el que está sentado 150 00:05:37,949 --> 00:05:38,769 en la secretaría 151 00:05:38,769 --> 00:05:42,149 estos datos son los que tienes de secretaría 152 00:05:42,149 --> 00:05:43,930 el de secretaría no tiene por qué tener 153 00:05:43,930 --> 00:05:45,649 una lista, nada, el de secretaría dice 154 00:05:45,649 --> 00:05:48,329 yo quiero un NIF y una nota nueva 155 00:05:48,329 --> 00:05:49,410 esto es lo que te doy 156 00:05:49,410 --> 00:05:50,290 Esto es lo que te doy. 157 00:05:50,750 --> 00:05:52,149 Tú ya haces dentro lo que quieras. 158 00:05:52,949 --> 00:05:54,730 Pero si me pides que yo te dé la lista de notas 159 00:05:54,730 --> 00:05:56,170 que ya tiene, que no sé cuánto, 160 00:05:56,250 --> 00:05:57,350 pues para eso ya lo hago yo. 161 00:06:00,930 --> 00:06:03,149 Vale, pues le pasamos el NIF, la nota nueva 162 00:06:03,149 --> 00:06:04,829 y él ya pues se busca la vida, 163 00:06:04,990 --> 00:06:06,689 que es coge el alumno con ese NIF, 164 00:06:07,610 --> 00:06:08,569 saca sus notas 165 00:06:08,569 --> 00:06:11,050 y de esas notas añade la nueva. 166 00:06:11,990 --> 00:06:12,230 ¿Vale? 167 00:06:13,810 --> 00:06:14,829 Entonces, repito, 168 00:06:15,449 --> 00:06:16,850 esto en tiempo de ejecución 169 00:06:16,850 --> 00:06:18,970 me podría salir null pointer exception 170 00:06:18,970 --> 00:06:20,329 si no hay alumno con este NIF. 171 00:06:20,329 --> 00:06:22,089 Podría salirme null pointer exception 172 00:06:22,089 --> 00:06:24,029 Si yo no quiero que salga eso 173 00:06:24,029 --> 00:06:25,990 Pues hombre, siempre puedo hacer esto 174 00:06:25,990 --> 00:06:31,970 ¿No? Si alumnos getNif 175 00:06:31,970 --> 00:06:34,410 Resulta que es igual a null 176 00:06:34,410 --> 00:06:36,750 Pues hombre, pues a lo mejor 177 00:06:36,750 --> 00:06:38,829 Puedes avisar y hacer un retun 178 00:06:38,829 --> 00:06:47,709 Entonces el de secretaría 179 00:06:47,709 --> 00:06:49,290 Que estáis sentados usando ese método 180 00:06:49,290 --> 00:06:51,629 Pues dice, ah, no existe ese alumno 181 00:06:51,629 --> 00:06:53,750 En lugar de salirle un null pointer exception 182 00:06:53,750 --> 00:06:54,769 Que es mucho más feo 183 00:06:54,769 --> 00:06:57,290 No existe alumno y retun 184 00:06:57,290 --> 00:06:58,110 Ala 185 00:06:58,110 --> 00:07:02,160 si no hemos salido por el retune 186 00:07:02,160 --> 00:07:04,000 hemos llegado aquí y entonces ya hacemos esto 187 00:07:04,000 --> 00:07:10,829 bueno, pues ya está 188 00:07:10,829 --> 00:07:12,790 con esto hemos añadido ya notas a un alumno 189 00:07:12,790 --> 00:07:13,649 vale 190 00:07:13,649 --> 00:07:16,550 ¿nota media de quién? 191 00:07:16,649 --> 00:07:17,889 del alumno con este NIF 192 00:07:17,889 --> 00:07:20,350 lo mismo de antes 193 00:07:20,350 --> 00:07:22,850 el de secretaría quiere un NIF 194 00:07:22,850 --> 00:07:24,350 y que tú saques la nota media 195 00:07:24,350 --> 00:07:27,149 no quiere además tener que pasarle las notas 196 00:07:27,149 --> 00:07:29,050 hacerla, no, para eso hace la media 197 00:07:29,050 --> 00:07:30,949 entonces le pasas un NIF y el ya 198 00:07:30,949 --> 00:07:32,589 el método hace lo que tiene que hacer 199 00:07:32,589 --> 00:07:33,870 vale, pues ¿qué tendrá que hacer? 200 00:07:34,509 --> 00:07:54,569 Bueno, pues entonces, yo aquí lo he puesto compacto, pero vamos, el alumno con este NIF es este, gracias a que tenemos un map, es facilísimo sacar alumno con ese NIF, ya está, alumno es NIF, esa es la ventaja del map, tengo una clave, automáticamente tengo al objeto con esa clave, lo tengo, 201 00:07:54,569 --> 00:07:57,750 no es como cuando tengo, repito 202 00:07:57,750 --> 00:07:59,810 un set o un list que tengo que 203 00:07:59,810 --> 00:08:01,670 iterar hasta que encuentro el que cumple 204 00:08:01,670 --> 00:08:03,009 esa propiedad, no, tengo 205 00:08:03,009 --> 00:08:05,610 ya, al map le doy la clave 206 00:08:05,610 --> 00:08:07,949 y él me dice, este es el valor asociado a esa clave 207 00:08:07,949 --> 00:08:09,290 vale, bueno 208 00:08:09,290 --> 00:08:12,389 pues el valor 209 00:08:12,389 --> 00:08:15,850 el alumno con esa clave tiene estas notas 210 00:08:15,850 --> 00:08:17,209 tiene estas notas 211 00:08:17,209 --> 00:08:19,649 luego estas son las, el listado de notas 212 00:08:19,649 --> 00:08:21,550 el listado de notas es este 213 00:08:21,550 --> 00:08:23,029 es el listado de notas 214 00:08:23,029 --> 00:08:41,350 Pues yo itero y me hago la media, voy sumando las notas de ese listado, esta es la suma de todas las notas y ahora ya cuando tengo toda la suma la divido entre el total, entre el total de notas que será el tamaño de la colección y ya está. 215 00:08:41,350 --> 00:08:47,799 aquí 216 00:08:47,799 --> 00:08:50,899 más para acá 217 00:08:50,899 --> 00:08:53,120 vale, aquí lo mismo 218 00:08:53,120 --> 00:08:54,700 este método no está verificando 219 00:08:54,700 --> 00:08:56,799 que el nif que me han pasado sea válido 220 00:08:56,799 --> 00:08:58,820 si el nif que yo le paso 221 00:08:58,820 --> 00:09:00,080 no es válido, paz 222 00:09:00,080 --> 00:09:03,039 aquí automáticamente sale un null pointer exception 223 00:09:03,039 --> 00:09:04,779 porque esto es null 224 00:09:04,779 --> 00:09:06,519 y aquí llamamos a esto 225 00:09:06,519 --> 00:09:08,700 entonces si el nif no es válido, paz, null pointer exception 226 00:09:08,700 --> 00:09:09,480 se va para el programa 227 00:09:09,480 --> 00:09:11,899 de nuevo yo podría aquí meter un nif 228 00:09:11,899 --> 00:09:14,559 if alumnos.getNif igual a null 229 00:09:14,559 --> 00:09:17,419 no hay nada que hacer, no hay nota media que sacar 230 00:09:17,419 --> 00:09:18,559 retún cero, ya está 231 00:09:18,559 --> 00:09:21,860 y si no, pues ya hago esto 232 00:09:21,860 --> 00:09:33,960 ¿y la nota media 233 00:09:33,960 --> 00:09:34,740 del curso? 234 00:09:36,100 --> 00:09:37,279 ¿la nota media del curso? 235 00:09:38,179 --> 00:09:39,139 bueno, pues yo aquí 236 00:09:39,139 --> 00:09:40,860 lo que he hecho es 237 00:09:40,860 --> 00:09:47,820 vale, voy a 238 00:09:47,820 --> 00:09:49,639 ahora ya sí que tengo que iterar 239 00:09:49,639 --> 00:09:51,320 porque necesito 240 00:09:51,320 --> 00:09:53,000 todos los alumnos 241 00:09:53,000 --> 00:09:55,480 cuyo curso es el que me han pedido 242 00:09:55,480 --> 00:09:57,340 todos los alumnos 243 00:09:57,340 --> 00:09:58,659 cuyo curso es el que me han pedido 244 00:09:58,659 --> 00:10:01,639 pues en este caso, ¿cuál es la forma más cómoda de iterar? 245 00:10:01,980 --> 00:10:03,460 vale, me hago yo 246 00:10:03,460 --> 00:10:05,360 un conjunto con las claves 247 00:10:05,360 --> 00:10:07,620 recordad que tenemos 248 00:10:07,620 --> 00:10:08,980 este método 249 00:10:08,980 --> 00:10:17,759 en triset 250 00:10:17,759 --> 00:10:18,940 no, con las claves no, con todo 251 00:10:18,940 --> 00:10:19,779 perdón que lo he dicho mal 252 00:10:19,779 --> 00:10:22,340 aquí tenemos que iterar por el map 253 00:10:22,340 --> 00:10:24,080 vale, pues entonces 254 00:10:24,080 --> 00:10:26,340 para iterar por el map 255 00:10:26,340 --> 00:10:27,340 me hago 256 00:10:27,340 --> 00:10:29,259 este set 257 00:10:29,259 --> 00:10:31,299 que es un set de objetos 258 00:10:31,299 --> 00:10:32,500 que envuelven los pares 259 00:10:32,500 --> 00:10:35,179 vale, pues ya está, me hago este set 260 00:10:35,179 --> 00:10:36,179 y ahora itero por él 261 00:10:36,179 --> 00:10:39,000 itero por él y ahora 262 00:10:39,000 --> 00:10:41,159 para cada 263 00:10:41,159 --> 00:10:43,019 objeto 264 00:10:43,019 --> 00:10:46,450 si el curso 265 00:10:46,450 --> 00:10:48,370 es el que me han dado 266 00:10:48,370 --> 00:10:50,730 pues sumo 267 00:10:50,730 --> 00:10:52,830 la nota media 268 00:10:52,830 --> 00:10:54,190 del alumno con ese nif 269 00:10:54,190 --> 00:10:58,419 vale, entonces a ver si entendéis esto 270 00:10:58,419 --> 00:11:01,299 E es el objeto que envuelve 271 00:11:01,299 --> 00:11:04,000 tanto la clave como el valor 272 00:11:04,000 --> 00:11:08,139 E es el objeto que envuelve tanto la clave como el valor 273 00:11:08,139 --> 00:11:09,460 entonces yo voy iterando por E 274 00:11:09,460 --> 00:11:14,580 entonces, para cada par 275 00:11:14,580 --> 00:11:16,960 que está metido en E, envuelto, para cada par 276 00:11:16,960 --> 00:11:19,740 si el curso del alumno de ese par 277 00:11:19,740 --> 00:11:22,980 porque el alumno lo saco del value, si el curso del alumno es igual al curso 278 00:11:22,980 --> 00:11:25,700 que me han dado, pues ahora tengo que 279 00:11:25,700 --> 00:11:28,759 lo que sumo a la media es la nota media 280 00:11:28,759 --> 00:11:29,480 de ese alumno 281 00:11:29,480 --> 00:11:32,519 entonces la nota media del alumno, ¿cómo la saco? 282 00:11:32,559 --> 00:11:34,799 tengo el método nota media al que tengo que pasar un NIF 283 00:11:34,799 --> 00:11:36,519 a nota media 284 00:11:36,519 --> 00:11:38,240 le paso el NIF de ese alumno 285 00:11:38,240 --> 00:11:41,169 ¿vale? o sea, E 286 00:11:41,169 --> 00:11:42,570 es el objeto 287 00:11:42,570 --> 00:11:45,809 que tiene dentro envuelto 288 00:11:45,809 --> 00:11:47,750 tanto el NIF que es la clave 289 00:11:47,750 --> 00:11:48,970 como el alumno que es el valor 290 00:11:48,970 --> 00:11:50,690 este es el NIF 291 00:11:50,690 --> 00:11:52,649 y este es el alumno 292 00:11:52,649 --> 00:11:55,529 tengo este método 293 00:11:55,529 --> 00:11:57,429 que le paso el NIF y me devuelve la nota media 294 00:11:57,429 --> 00:11:59,590 bueno, pues para ese alumno 295 00:11:59,590 --> 00:12:02,570 si su curso es el que corresponde 296 00:12:02,570 --> 00:12:04,250 saco su nota media 297 00:12:04,250 --> 00:12:05,950 y la agrego a la suma total 298 00:12:05,950 --> 00:12:07,110 la agrego a la suma total 299 00:12:07,110 --> 00:12:10,399 ¡ay! me falta aquí la división 300 00:12:10,399 --> 00:12:12,519 ¿vale? no he hecho la división 301 00:12:12,519 --> 00:12:14,799 entonces he devuelto la suma de todas las notas medias 302 00:12:14,799 --> 00:12:16,399 no he hecho la división 303 00:12:16,399 --> 00:12:19,720 tengo que dividir aquí entre el total de elementos que he sumado 304 00:12:19,720 --> 00:12:23,419 voy a tener que hacer un contador aquí para contar 305 00:12:23,419 --> 00:12:26,370 los que 306 00:12:26,370 --> 00:12:38,379 cada vez que incorporo un sumando nuevo 307 00:12:38,379 --> 00:12:40,039 a la suma, le cuento 308 00:12:40,039 --> 00:12:44,970 y ahora ya me falta esto, claro 309 00:12:44,970 --> 00:12:54,809 vale, pues de nuevo, repito 310 00:12:54,809 --> 00:12:56,690 con el método ese en triset de ahí 311 00:12:56,690 --> 00:12:59,090 con este método 312 00:12:59,090 --> 00:12:59,750 en triset 313 00:12:59,750 --> 00:13:02,429 saco un conjunto 314 00:13:02,429 --> 00:13:03,269 de objetos 315 00:13:03,269 --> 00:13:06,330 que tienen dentro la clave y el valor 316 00:13:06,330 --> 00:13:08,370 que yo saco con getKey y getValue 317 00:13:08,370 --> 00:13:09,669 y ya las uso como me dé la gana 318 00:13:09,669 --> 00:13:12,950 pues las estoy usando 319 00:13:12,950 --> 00:13:14,730 para el alumno 320 00:13:14,730 --> 00:13:16,889 cuyo curso es el que me han dado 321 00:13:16,889 --> 00:13:19,470 este es su NIF 322 00:13:19,470 --> 00:13:21,110 pues uso el NIF 323 00:13:21,110 --> 00:13:22,470 para sacar su nota media 324 00:13:22,470 --> 00:13:25,190 la agrego al sumatorio y le cuento 325 00:13:25,190 --> 00:13:27,230 y luego ya devuelvo 326 00:13:27,230 --> 00:13:30,389 esa suma 327 00:13:30,389 --> 00:13:31,169 entre el total 328 00:13:31,169 --> 00:13:36,440 y ya está 329 00:13:36,440 --> 00:13:41,549 y luego bueno, para comprobar luego en el main que todo funcionaba 330 00:13:41,549 --> 00:13:42,669 en las pruebas que he hecho y tal 331 00:13:42,669 --> 00:13:45,149 pues uno podría incorporar un listal alumnos 332 00:13:45,149 --> 00:13:50,539 y ya está, un listal alumnos 333 00:13:50,539 --> 00:13:51,779 que otra vez estoy recorriendo 334 00:13:51,779 --> 00:13:53,240 Otra vez estoy recorriendo 335 00:13:53,240 --> 00:13:55,000 Listo los alumnos 336 00:13:55,000 --> 00:13:56,100 Para cada alumno 337 00:13:56,100 --> 00:13:59,100 Pues muestro su NIF 338 00:13:59,100 --> 00:14:00,879 Y su nota media, por ejemplo 339 00:14:00,879 --> 00:14:05,909 Bueno, pues nada 340 00:14:05,909 --> 00:14:07,889 Ya subiré esto 341 00:14:07,889 --> 00:14:09,309 Vale, en el aula virtual 342 00:14:09,309 --> 00:14:10,850 Siguiente, ¿qué más tenemos? 343 00:14:17,559 --> 00:14:19,899 Aquí donde ponen el tema 344 00:14:19,899 --> 00:14:21,100 Cuatro colecciones 345 00:14:21,100 --> 00:14:22,299 Enunciar, grito y repaso 346 00:14:22,299 --> 00:14:24,600 Bueno, pues si descargáis eso 347 00:14:24,600 --> 00:14:25,240 Que está ahí 348 00:14:25,240 --> 00:14:30,690 Sí, bueno, incluso ahora mismo 349 00:14:30,690 --> 00:14:31,330 Por ejemplo 350 00:14:31,330 --> 00:14:33,350 ¿qué podéis hacer rápidamente? 351 00:14:33,610 --> 00:14:35,889 este sí que es el típico programa rápido 352 00:14:35,889 --> 00:14:37,450 porque no es de gestionar 353 00:14:37,450 --> 00:14:39,850 de alumnos, de no sé qué, que es pesado 354 00:14:39,850 --> 00:14:41,370 un diccionario 355 00:14:41,370 --> 00:14:42,970 un diccionario 356 00:14:42,970 --> 00:14:45,049 yo me quiero llevar mi propio diccionario 357 00:14:45,049 --> 00:14:46,809 pues me voy a hacer mi aplicación diccionario 358 00:14:46,809 --> 00:14:49,570 yo le digo una palabra y me la da en inglés 359 00:14:49,570 --> 00:14:52,149 los datos de los que se va a nutrir 360 00:14:52,149 --> 00:14:53,789 son todos estos 361 00:14:53,789 --> 00:14:56,820 estos son los datos 362 00:14:56,820 --> 00:14:57,179 ¿vale? 363 00:14:59,570 --> 00:15:01,830 entonces los tenéis aquí ya, podéis hacer un copia y pega 364 00:15:01,830 --> 00:15:03,629 entonces, a ver 365 00:15:03,629 --> 00:15:05,990 esto cambia la idea 366 00:15:05,990 --> 00:15:07,769 de ejercicio, es un ejercicio más rápido 367 00:15:07,769 --> 00:15:09,549 el tema es, yo quiero hacer un diccionario 368 00:15:09,549 --> 00:15:11,269 mi propio diccionario, porque quiero 369 00:15:11,269 --> 00:15:14,029 que trabaje con la interfaz que yo le hago 370 00:15:14,029 --> 00:15:15,129 en nuestro caso por consola 371 00:15:15,129 --> 00:15:17,850 y él va a estar todo el rato pidiéndome 372 00:15:17,850 --> 00:15:19,769 palabras para traducir, introduce palabra 373 00:15:19,769 --> 00:15:22,029 no sé qué, y me la escribe 374 00:15:22,029 --> 00:15:23,690 en inglés, y así todo el rato, un bucle infinito 375 00:15:23,690 --> 00:15:25,889 un bucle infinito que está todo el rato pidiéndome 376 00:15:25,889 --> 00:15:28,190 palabras para traducir 377 00:15:28,190 --> 00:15:29,929 ¿vale? entonces 378 00:15:29,929 --> 00:15:33,610 ahora, ya habría 379 00:15:33,610 --> 00:15:35,669 hay que pensar, vale, los datos del diccionario 380 00:15:35,669 --> 00:15:37,169 ¿cuáles son los datos del diccionario? 381 00:15:37,549 --> 00:15:40,049 son todas las palabras de las que tiene traducción 382 00:15:40,049 --> 00:15:41,970 todas las palabras de las que tiene traducción 383 00:15:41,970 --> 00:15:43,490 vamos a suponer que son estas 384 00:15:43,490 --> 00:15:44,549 ese listado que tenéis ahí 385 00:15:44,549 --> 00:15:47,529 entonces, el diccionario se tiene que 386 00:15:47,529 --> 00:15:48,610 nutrir con esos datos 387 00:15:48,610 --> 00:15:51,190 bueno, pues entonces, la forma 388 00:15:51,190 --> 00:15:53,669 más cómoda para trabajar 389 00:15:53,669 --> 00:15:55,769 es que los datos 390 00:15:55,769 --> 00:15:56,669 estén en un map 391 00:15:56,669 --> 00:15:59,610 y haya un listado de pares donde cada par 392 00:15:59,610 --> 00:16:02,029 sea palabra en español, palabra en inglés 393 00:16:02,029 --> 00:16:03,590 palabra en español, palabra en inglés 394 00:16:03,590 --> 00:16:05,330 en inglés, palabra en español, palabra en inglés 395 00:16:05,330 --> 00:16:06,909 porque si los tenemos así 396 00:16:06,909 --> 00:16:08,850 luego el diccionario es facilísimo 397 00:16:08,850 --> 00:16:11,809 tú le das una palabra y él te busca en el map 398 00:16:11,809 --> 00:16:13,789 el valor de esa 399 00:16:13,789 --> 00:16:15,009 palabra, te lo muestra, etc. 400 00:16:15,909 --> 00:16:17,610 y se podría hacer 401 00:16:17,610 --> 00:16:19,809 tanto en la traducción en un sentido como en el otro 402 00:16:19,809 --> 00:16:21,549 en el sentido español 403 00:16:21,549 --> 00:16:23,649 inglés es inmediata, se hace el 404 00:16:23,649 --> 00:16:25,529 get key, en el sentido 405 00:16:25,529 --> 00:16:27,710 inglés español no es 406 00:16:27,710 --> 00:16:29,629 inmediata porque ahora buscamos 407 00:16:29,629 --> 00:16:31,750 por el valor, luego entonces hay que iterar 408 00:16:31,750 --> 00:16:33,669 ¿vale? bueno 409 00:16:33,669 --> 00:16:36,330 aquí, ¿cuál es lo más 410 00:16:36,330 --> 00:16:37,889 entre comillas complicado 411 00:16:37,889 --> 00:16:39,389 de este ejercicio? 412 00:16:39,909 --> 00:16:41,669 de un string así de largo 413 00:16:41,669 --> 00:16:44,070 de este string tan largo 414 00:16:44,070 --> 00:16:45,789 que es un pedazo de string 415 00:16:45,789 --> 00:16:47,149 que tiene este formato 416 00:16:47,149 --> 00:16:50,389 palabra en español, guión, palabra en inglés 417 00:16:50,389 --> 00:16:52,230 punto y coma, palabra en español, guión 418 00:16:52,230 --> 00:16:54,450 pues de este string tan largo 419 00:16:54,450 --> 00:16:56,710 sacar los datos 420 00:16:56,710 --> 00:16:57,309 para el mapa 421 00:16:57,309 --> 00:17:00,269 pero para eso tenéis el split, tenéis todo eso 422 00:17:00,269 --> 00:17:02,809 pues venga, vamos a hacer 423 00:17:02,809 --> 00:17:05,150 rápido, antes de irnos, son 10 minutos 424 00:17:05,150 --> 00:17:06,170 este diccionario 425 00:17:06,170 --> 00:17:08,970 inglés español, está en el aula denunciado este 426 00:17:08,970 --> 00:17:10,309 para que copiéis y peguéis ese 427 00:17:10,309 --> 00:17:12,150 ese estilo 428 00:17:12,150 --> 00:17:15,069 en tema 4, en tema 4 al final 429 00:17:15,069 --> 00:17:16,970 pone, no en el tema 430 00:17:16,970 --> 00:17:18,150 perdón, en el de colecciones 431 00:17:18,150 --> 00:17:20,670 el tema de colecciones, que no sé cuál es, el 4, el 5 432 00:17:20,670 --> 00:17:22,829 pues el que sea 433 00:17:22,829 --> 00:17:23,710 en el de colecciones 434 00:17:23,710 --> 00:17:26,769 en el de colecciones 435 00:17:26,769 --> 00:17:27,710 es que no sé cuál es 436 00:17:27,710 --> 00:17:28,849 aquí 437 00:17:28,849 --> 00:17:33,130 al final de todo, donde pone enunciado, ejercicio y repaso 438 00:17:33,130 --> 00:17:35,529 pues es el segundo que hay en esa lista 439 00:17:35,529 --> 00:17:41,700 pues hala, a ver cómo hacéis ese diccionario antes de irnos 440 00:17:41,700 --> 00:17:53,369 hasta luego