1 00:00:02,990 --> 00:00:08,429 Este es localizar al alumno y una vez que lo hemos localizado, le añadimos la asignatura a su lista. 2 00:00:09,630 --> 00:00:18,390 Y localizar al alumno, pues bueno, si lo hacemos con el for para no liarnos y que sea lo que estamos acostumbrados, 3 00:00:18,429 --> 00:00:22,809 que estamos acostumbrados al for de índice y no nos liamos, pues no pasa nada, hacemos con el for de índice. 4 00:00:25,089 --> 00:00:33,960 Desde la posición 0, mientras yo no haya acabado con mi colección, 5 00:00:40,640 --> 00:00:48,899 Pues si este alumno resulta que su número de matrícula es igual a la que me han dado, 6 00:00:56,590 --> 00:00:57,890 pues ya tengo al alumno. 7 00:01:08,549 --> 00:01:09,450 Recorro el for. 8 00:01:12,329 --> 00:01:16,049 Cuando encuentro al alumno cuya matrícula es igual que la que me han dado, 9 00:01:16,730 --> 00:01:21,209 es como el recorrido del array, igual, lo mismo, pues ya está, ya lo tengo. 10 00:01:21,209 --> 00:01:22,870 ahora la pregunta es 11 00:01:22,870 --> 00:01:27,450 ¿qué hago con ese alumno GetDay? 12 00:01:27,590 --> 00:01:28,290 ¿qué hago con este? 13 00:01:28,629 --> 00:01:29,450 ¿qué se le ha encontrado? 14 00:01:29,549 --> 00:01:30,150 ¿qué hago con este? 15 00:01:31,010 --> 00:01:33,170 pues añadirle a sus asignaturas la nueva 16 00:01:33,170 --> 00:01:36,049 pues hombre, lo tengo muy fácil 17 00:01:36,049 --> 00:01:38,269 cojo sus asignaturas 18 00:01:38,269 --> 00:01:40,129 primero cojo al alumno 19 00:01:40,129 --> 00:01:40,590 que es este 20 00:01:40,590 --> 00:01:43,329 este es mi alumno ya encontrado 21 00:01:43,329 --> 00:01:45,569 ahora, cojo sus asignaturas 22 00:01:45,569 --> 00:01:46,269 que son estas 23 00:01:46,269 --> 00:01:49,989 y a sus asignaturas cojo y les añado la nueva 24 00:01:49,989 --> 00:01:51,930 y ya está 25 00:01:51,930 --> 00:01:53,590 y he terminado el método 26 00:01:53,590 --> 00:01:55,829 vale 27 00:01:55,829 --> 00:01:59,980 ya está 28 00:01:59,980 --> 00:02:01,920 localizo al alumno 29 00:02:01,920 --> 00:02:05,079 cuando encuentro al alumno cuya matrícula es la que me han dado 30 00:02:05,079 --> 00:02:07,200 pues ese alumno que acabo de encontrar 31 00:02:07,200 --> 00:02:08,060 alumnos get i 32 00:02:08,060 --> 00:02:10,939 cojo sus asignaturas con el get 33 00:02:10,939 --> 00:02:12,740 correspondiente, cojo sus asignaturas 34 00:02:12,740 --> 00:02:14,520 y añado la nueva 35 00:02:14,520 --> 00:02:17,000 como get asignaturas 36 00:02:17,000 --> 00:02:17,740 es una lista 37 00:02:17,740 --> 00:02:20,740 lo tengo muy fácil, lo añado con el add y se acabó 38 00:02:20,740 --> 00:02:25,219 y esta sería la versión más sencilla 39 00:02:25,219 --> 00:02:27,099 sin preocuparse 40 00:02:27,099 --> 00:02:29,020 de que de alguna manera 41 00:02:29,020 --> 00:02:30,960 me avise de que aún no existe o no existe 42 00:02:30,960 --> 00:02:32,979 etcétera, la versión más sencilla 43 00:02:32,979 --> 00:02:35,020 sería esta, vamos a 44 00:02:35,020 --> 00:02:36,800 probarla en nuestro main 45 00:02:36,800 --> 00:02:40,560 vale 46 00:02:40,560 --> 00:02:43,400 vamos a matricular al alumno que tenemos 47 00:02:43,400 --> 00:02:43,979 al único 48 00:02:43,979 --> 00:02:47,120 al alumno 1 de una asignatura 49 00:02:47,120 --> 00:02:51,759 vamos a matricular 50 00:02:51,759 --> 00:02:55,759 al alumno de la asignatura 51 00:02:55,759 --> 00:02:56,580 lengua 52 00:02:56,580 --> 00:03:01,009 venga, alumno 1 matriculado 53 00:03:01,009 --> 00:03:02,770 de la asignatura lengua y vamos a ver si se 54 00:03:02,770 --> 00:03:04,789 realmente se ha matriculado mostrando sus datos, claro 55 00:03:04,789 --> 00:03:06,750 vamos a volver 56 00:03:06,750 --> 00:03:07,810 a mostrar sus datos 57 00:03:07,810 --> 00:03:14,129 le matriculamos 58 00:03:14,129 --> 00:03:16,770 y mostramos los datos, a ver si se ha 59 00:03:16,770 --> 00:03:17,729 matriculado realmente 60 00:03:17,729 --> 00:03:31,430 pues sí, a ver, me lo muestra dos veces 61 00:03:31,430 --> 00:03:33,590 porque es que aquí como lo he hecho de dos maneras 62 00:03:33,590 --> 00:03:34,330 distintas 63 00:03:34,330 --> 00:03:37,349 este de aquí, que otra cosa que se puede hacer 64 00:03:37,349 --> 00:03:39,050 he hecho lo mismo, pues el string 65 00:03:39,050 --> 00:03:41,430 el string es doble, vale 66 00:03:41,430 --> 00:03:43,590 pero vamos a comentar esto 67 00:03:43,590 --> 00:03:45,530 para que lo tengáis aquí 68 00:03:45,530 --> 00:03:46,789 otra cosa que se puede hacer 69 00:03:46,789 --> 00:03:48,229 Pero 70 00:03:48,229 --> 00:03:50,310 Esto como era para 71 00:03:50,310 --> 00:03:52,389 Comentar así, ¿no? 72 00:03:52,710 --> 00:03:53,289 Ay, no 73 00:03:53,289 --> 00:03:58,310 Como era para ponerlo comentado toda la vez 74 00:03:58,310 --> 00:03:59,830 No 75 00:03:59,830 --> 00:04:02,150 Siempre se me olvida 76 00:04:02,150 --> 00:04:03,710 ¿Eh? 77 00:04:07,500 --> 00:04:09,560 Sí, para ponerlo todo comentado de golpe 78 00:04:09,560 --> 00:04:13,000 Es que siempre se me olvida, jolines 79 00:04:13,000 --> 00:04:17,189 Barra asterisco 80 00:04:17,189 --> 00:04:18,589 ¿Seguro? ¿Qué barra? 81 00:04:20,870 --> 00:04:21,110 ¿Eh? 82 00:04:21,110 --> 00:04:25,480 Ah, no, no, no, pero 83 00:04:25,480 --> 00:04:27,120 Quiero un atajo que hay 84 00:04:27,120 --> 00:04:29,759 Para que me lo ponga así todo 85 00:04:29,759 --> 00:04:31,899 Esto quería 86 00:04:31,899 --> 00:04:33,399 Vale, que queda como más bonito 87 00:04:33,399 --> 00:04:35,879 Son más habituales estos comentarios 88 00:04:35,879 --> 00:04:37,360 ¿Qué? Ahí 89 00:04:37,360 --> 00:04:38,980 ¿Me dio el ratón o qué? Ahí 90 00:04:38,980 --> 00:04:41,240 Estos son como más 91 00:04:41,240 --> 00:04:42,660 Más bonitos que 92 00:04:42,660 --> 00:04:46,060 Es un estilo de comentario más habitual 93 00:04:46,060 --> 00:04:48,100 Vale, entonces lo dejo comentado 94 00:04:48,100 --> 00:04:50,000 Así, la otra cosa que se puede hacer 95 00:04:50,000 --> 00:04:51,660 Vamos a volver a probar 96 00:04:51,660 --> 00:04:54,259 pero sí, podía haberle puesto el barra asterisco 97 00:04:54,259 --> 00:05:00,750 y ya está, y así se ve mejor 98 00:05:00,750 --> 00:05:02,230 inicialmente no tenía nada 99 00:05:02,230 --> 00:05:04,850 y ahora ya tiene 100 00:05:04,850 --> 00:05:05,810 la asignatura de lengua 101 00:05:05,810 --> 00:05:17,519 a ver, otro método 102 00:05:17,519 --> 00:05:24,480 desmatricular 103 00:05:24,480 --> 00:05:27,360 de una asignatura 104 00:05:27,360 --> 00:05:29,019 dado el número de matrícula 105 00:05:29,019 --> 00:05:31,139 y el nombre de la asignatura, hay que desmatricularle 106 00:05:31,139 --> 00:05:33,079 cabecera 107 00:05:33,079 --> 00:05:33,699 del método 108 00:05:33,699 --> 00:05:46,769 pues nada, la cabecera del método 109 00:05:46,769 --> 00:05:49,769 desmatricular 110 00:05:49,769 --> 00:05:54,509 alumno de una asignatura 111 00:05:54,509 --> 00:05:57,290 dado el número de matrícula 112 00:05:57,290 --> 00:06:02,759 y dada la asignatura 113 00:06:02,759 --> 00:06:04,379 que le queremos quitar 114 00:06:04,379 --> 00:06:07,699 pues venga 115 00:06:07,699 --> 00:06:10,399 esto será parecido pero en lugar de añadir 116 00:06:10,399 --> 00:06:11,139 habrá que borrar 117 00:06:11,139 --> 00:06:14,500 pues a ver como lo hacéis 118 00:06:14,500 --> 00:06:23,319 venga, haced este método 119 00:06:23,319 --> 00:06:28,360 bueno, pues este es como el de arriba 120 00:06:28,360 --> 00:06:29,939 pero en lugar de 121 00:06:29,939 --> 00:06:32,339 añadir una asignatura 122 00:06:32,339 --> 00:06:34,399 eliminar una asignatura 123 00:06:34,399 --> 00:06:37,680 entonces es lo mismo 124 00:06:37,680 --> 00:06:40,800 copiamos y pegamos 125 00:06:40,800 --> 00:06:45,220 una vez que he localizado 126 00:06:45,220 --> 00:06:48,000 al alumno cuyo número de matrícula es ese 127 00:06:48,000 --> 00:06:49,800 cojo su array 128 00:06:49,800 --> 00:06:52,100 de asignaturas y como es una lista 129 00:06:52,100 --> 00:06:53,699 puedo hacer todo lo que puedo hacer 130 00:06:53,699 --> 00:06:55,540 con las listas, que que es 131 00:06:55,540 --> 00:06:57,139 insertar, eliminar, etc 132 00:06:57,139 --> 00:06:59,980 pues cambio el add por remove 133 00:06:59,980 --> 00:07:01,560 y ya está 134 00:07:01,560 --> 00:07:04,300 vale 135 00:07:04,300 --> 00:07:10,449 he borrado la asignatura 136 00:07:10,449 --> 00:07:12,269 de la lista get asignaturas 137 00:07:12,269 --> 00:07:13,310 del alumno, ya está 138 00:07:13,310 --> 00:07:16,529 vale, entonces si silencio 139 00:07:16,529 --> 00:07:18,410 si lo probamos en nuestro 140 00:07:18,410 --> 00:07:20,410 main, vamos a matricularle de dos 141 00:07:20,410 --> 00:07:23,850 y luego le quitamos una 142 00:07:23,850 --> 00:07:26,670 le matriculamos de lengua 143 00:07:26,670 --> 00:07:28,290 y mates 144 00:07:28,290 --> 00:07:30,389 mostramos los datos 145 00:07:30,389 --> 00:07:31,810 y ahora le vamos a desmatricular 146 00:07:31,810 --> 00:07:33,509 de lengua 147 00:07:33,509 --> 00:07:42,149 no le he puesto public 148 00:07:42,149 --> 00:07:46,310 ah el static 149 00:07:46,310 --> 00:07:46,629 vale 150 00:07:46,629 --> 00:07:56,199 desmatriculamos 151 00:07:56,199 --> 00:07:57,980 a el alumno 152 00:07:57,980 --> 00:07:58,939 de matricula 1 153 00:07:58,939 --> 00:08:02,079 le vamos a desmatricular 154 00:08:02,079 --> 00:08:03,180 de lengua 155 00:08:03,180 --> 00:08:10,199 y vamos a mostrar otra vez los datos 156 00:08:10,199 --> 00:08:11,800 sacamos otra vez 157 00:08:11,800 --> 00:08:13,459 su certificado a ver que tiene 158 00:08:13,459 --> 00:08:15,920 después de haberle 159 00:08:15,920 --> 00:08:16,699 desmatriculado 160 00:08:16,699 --> 00:08:25,819 vale, pues este es el alumno 161 00:08:25,819 --> 00:08:28,240 inicial, sin asignaturas 162 00:08:28,240 --> 00:08:29,800 luego le matriculamos 163 00:08:29,800 --> 00:08:31,579 de lengua y mates, aquí las tiene 164 00:08:31,579 --> 00:08:33,320 lengua y mates, y ahora le hemos 165 00:08:33,320 --> 00:08:35,799 matriculado de lengua, pues aquí se ha quedado con mates 166 00:08:35,799 --> 00:08:36,559 vale 167 00:08:36,559 --> 00:08:39,220 hasta ahí bien, ¿no? 168 00:08:41,759 --> 00:08:43,399 pero cuidadín, porque el 169 00:08:43,399 --> 00:08:45,320 remove, el remove 170 00:08:45,320 --> 00:08:47,220 tiene su cosa 171 00:08:47,220 --> 00:08:50,159 ¿cómo funciona el remove? 172 00:08:51,460 --> 00:08:53,480 el remove, si tú le pasas una posición 173 00:08:53,480 --> 00:08:54,740 no tiene ningún peligro 174 00:08:54,740 --> 00:08:57,000 le pasas la posición 3 175 00:08:57,000 --> 00:08:59,860 y te borra el elemento de posición 3 176 00:08:59,860 --> 00:09:00,620 de la colección 177 00:09:00,620 --> 00:09:02,340 es como el get 178 00:09:02,340 --> 00:09:05,120 pero remove también tiene la 179 00:09:05,120 --> 00:09:07,299 alternativa que estamos usando 180 00:09:07,299 --> 00:09:08,559 porque es un método sobrecargado 181 00:09:08,559 --> 00:09:10,320 pasa en un objeto 182 00:09:10,320 --> 00:09:13,480 y te borra el primero que encuentra 183 00:09:13,480 --> 00:09:14,899 que es igual a este 184 00:09:14,899 --> 00:09:16,100 que es igual a ese 185 00:09:16,100 --> 00:09:19,240 ¿qué pasa? aquí estamos trabajando con string 186 00:09:19,240 --> 00:09:20,779 porque esta colección es de string 187 00:09:20,779 --> 00:09:23,779 entonces el string, la clase string tiene su equal ya hecho 188 00:09:23,779 --> 00:09:27,159 y entonces el remove coge la asignatura 189 00:09:27,159 --> 00:09:28,759 que yo le paso, mates, lengua 190 00:09:28,759 --> 00:09:30,879 te va a buscar a raíz de asignaturas 191 00:09:30,879 --> 00:09:33,220 la primera que se encuentra igual a esa 192 00:09:33,220 --> 00:09:35,000 igual según el equals 193 00:09:35,000 --> 00:09:36,860 de string, que es que la cadena sea igual 194 00:09:36,860 --> 00:09:38,740 luego funciona perfectamente 195 00:09:38,740 --> 00:09:41,399 no hay ningún problema, pero no nos olvidemos 196 00:09:41,399 --> 00:09:42,639 que el remove lo que hace es 197 00:09:42,639 --> 00:09:45,399 te recorre la colección, te la recorre 198 00:09:45,399 --> 00:09:47,019 por dentro, te tiene su for dentro 199 00:09:47,019 --> 00:09:49,200 no hay otra, el remove tiene su for dentro 200 00:09:49,200 --> 00:09:51,299 te la recorre y en cuanto 201 00:09:51,299 --> 00:09:53,600 se encuentra un objeto de esta colección 202 00:09:53,600 --> 00:09:55,720 igual que este, te lo quita 203 00:09:55,720 --> 00:09:58,220 solo el primero que encuentra igual 204 00:09:58,220 --> 00:09:59,019 del resto ya pasa 205 00:09:59,019 --> 00:10:02,159 ¿vale? entonces en nuestro caso esta colección 206 00:10:02,159 --> 00:10:03,820 ¿de qué es? de string, de cadenas 207 00:10:03,820 --> 00:10:05,340 yo le paso un string 208 00:10:05,340 --> 00:10:08,100 la igualdad de cadenas está perfectamente ya 209 00:10:08,100 --> 00:10:10,279 programada en la clase string, me puedo despreocupar 210 00:10:10,279 --> 00:10:12,379 en cuanto encuentre la colección 211 00:10:12,379 --> 00:10:14,600 de asignaturas una igual a esta 212 00:10:14,600 --> 00:10:15,600 elimina esa 213 00:10:15,600 --> 00:10:16,460 ¿vale? 214 00:10:18,039 --> 00:10:20,080 vale, eso por un lado, pero solo la primera 215 00:10:20,080 --> 00:10:21,480 ocurrencia, imaginaos que 216 00:10:21,480 --> 00:10:23,080 yo le matricula 217 00:10:23,080 --> 00:10:24,860 para ver cómo funciona bien 218 00:10:24,860 --> 00:10:27,320 voy a hacer la prueba matriculándole de lengua 219 00:10:27,320 --> 00:10:28,000 dos veces 220 00:10:28,000 --> 00:10:30,279 le voy a matricular 221 00:10:30,279 --> 00:10:37,600 de lengua, de mates y de lengua 222 00:10:37,600 --> 00:10:40,039 asignaturas es una lista 223 00:10:40,039 --> 00:10:41,379 luego admite duplicados 224 00:10:41,379 --> 00:10:43,580 con lo cual en su lista de asignaturas tendrá 225 00:10:43,580 --> 00:10:45,840 lengua, mates y lengua 226 00:10:45,840 --> 00:10:48,019 lengua y lengua son iguales 227 00:10:48,019 --> 00:10:49,799 son objetos iguales, dos estén iguales 228 00:10:49,799 --> 00:10:51,080 pero están en posiciones distintas 229 00:10:51,080 --> 00:10:53,259 luego la lista de asignaturas las coge 230 00:10:53,259 --> 00:10:54,419 vale, matricula de tres 231 00:10:54,419 --> 00:10:56,659 muestro los datos, luego 232 00:10:56,659 --> 00:10:58,379 ahora le voy a desmatricular de lengua 233 00:10:58,379 --> 00:11:00,460 a ver que me muestra 234 00:11:00,460 --> 00:11:03,200 vamos a volver a ejecutar 235 00:11:03,200 --> 00:11:03,600 esto 236 00:11:03,600 --> 00:11:13,220 ¿veis? 237 00:11:14,659 --> 00:11:16,480 me ha borrado solo 238 00:11:16,480 --> 00:11:18,860 la primera ocurrencia que se ha 239 00:11:18,860 --> 00:11:21,000 encontrado igual a lo que yo le paso 240 00:11:21,000 --> 00:11:22,460 solo la primera 241 00:11:22,460 --> 00:11:24,740 en cuanto ha encontrado esta que era 242 00:11:24,740 --> 00:11:26,600 igual a la que yo le pasaba, la ha borrado 243 00:11:26,600 --> 00:11:28,919 y ya deja de mirar 244 00:11:28,919 --> 00:11:30,860 ¿vale? luego solo me ha borrado la primera 245 00:11:30,860 --> 00:11:33,179 la otra que estaba 246 00:11:33,179 --> 00:11:35,779 también igual que lengua y esta no 247 00:11:35,779 --> 00:11:37,720 vale, primera cosa 248 00:11:37,720 --> 00:11:39,039 el remove funciona así 249 00:11:39,039 --> 00:11:41,059 funciona así, el que lo hizo, lo hizo así 250 00:11:41,059 --> 00:11:43,679 funciona así, remove te borra 251 00:11:43,679 --> 00:11:45,759 solo la primera ocurrencia de esta lista 252 00:11:45,759 --> 00:11:46,500 igual que esta 253 00:11:46,500 --> 00:11:51,240 lo que pasa es que si uno 254 00:11:51,240 --> 00:11:53,200 quiere borrarlas todas las que sean 255 00:11:53,200 --> 00:11:53,840 iguales 256 00:11:53,840 --> 00:11:57,279 el que hizo el remove 257 00:11:57,279 --> 00:11:58,919 lo hizo, esto no 258 00:11:58,919 --> 00:12:01,200 es relativamente fácil de entender pero bueno 259 00:12:01,200 --> 00:12:02,700 te devuelve un boolean 260 00:12:02,700 --> 00:12:05,899 te devuelve un boolean que es true 261 00:12:05,899 --> 00:12:07,659 si encontró una y la borró 262 00:12:07,659 --> 00:12:09,419 y false si no 263 00:12:09,419 --> 00:12:11,600 entonces ¿cómo podemos usar ese boolean? 264 00:12:12,259 --> 00:12:13,320 podemos usar ese boolean 265 00:12:13,320 --> 00:12:14,940 para meter esto en un while 266 00:12:14,940 --> 00:12:17,340 de tal forma que él borra 267 00:12:17,340 --> 00:12:19,559 y te devolverá un true 268 00:12:19,559 --> 00:12:21,580 y la colección se ha quedado sin eso 269 00:12:21,580 --> 00:12:23,600 entonces como es un while 270 00:12:23,600 --> 00:12:24,580 volverá a entrar 271 00:12:24,580 --> 00:12:28,059 ¿y qué borrará ahora? el siguiente que se encuentra 272 00:12:28,059 --> 00:12:29,620 y te devolverá un true 273 00:12:29,620 --> 00:12:31,580 entonces el while 274 00:12:31,580 --> 00:12:33,519 vuelve a entrar, con lo cual vuelve a hacer remove 275 00:12:33,519 --> 00:12:35,139 entonces si yo quiero 276 00:12:35,139 --> 00:12:37,899 que me borre todas las ocurrencias 277 00:12:37,899 --> 00:12:39,379 iguales a este, no solo la primera 278 00:12:39,379 --> 00:12:41,940 lo tengo tan fácil como meter esto en un while 279 00:12:41,940 --> 00:12:45,340 meto esto en un while 280 00:12:45,340 --> 00:12:52,840 y divino, ya lo tengo 281 00:12:52,840 --> 00:12:54,799 lo meto en un while 282 00:12:54,799 --> 00:12:56,840 para que el remove se haga 283 00:12:56,840 --> 00:12:57,860 muchas veces 284 00:12:57,860 --> 00:13:04,679 eh, añado un while 285 00:13:04,679 --> 00:13:06,220 delante y ya está, entonces 286 00:13:06,220 --> 00:13:10,159 Entonces automáticamente he hecho un bucle, este bucle no tiene código, no tiene nada, 287 00:13:10,220 --> 00:13:15,360 lo he terminado en punto y coma, no tiene nada, ¿veis? No tiene código, es como si 288 00:13:15,360 --> 00:13:22,509 yo hiciera esto, como lo queráis hacer, un while sin código y como no tiene código, 289 00:13:24,389 --> 00:13:29,190 así, punto y coma, un while que no tiene nada, si lo veis más claro así, un while 290 00:13:29,190 --> 00:13:32,549 vacío, un while que no tiene nada, claro, es que lo que hace, lo hace en la condición, 291 00:13:32,549 --> 00:13:55,929 Entonces, ¿este while qué hace? Primero, como dentro de la condición está hacer eso, borra el primero que haya y te devuelve true porque ha encontrado uno y lo ha borrado, te devuelve true, con lo cual vuelve a entrar en el while, vuelve a entrar en el while, ya no estaba ese que lo ha borrado, con lo cual el que va a borrar es el siguiente y te devuelve true porque ha borrado uno, con lo cual vuelve a entrar. 292 00:13:55,929 --> 00:13:58,590 así hasta que no haya encontrado ninguno 293 00:13:58,590 --> 00:14:00,549 porque cuando no haya encontrado ninguno para borrar 294 00:14:00,549 --> 00:14:02,490 se volverá falso, con lo cual ya no 295 00:14:02,490 --> 00:14:03,169 entra más en el while 296 00:14:03,169 --> 00:14:06,250 luego la forma de forzar a que el remove 297 00:14:06,250 --> 00:14:08,710 te borre todos los que sean iguales a este 298 00:14:08,710 --> 00:14:10,490 es tan sencillo como meterlo 299 00:14:10,490 --> 00:14:10,929 en un while 300 00:14:10,929 --> 00:14:14,129 lo metes en un while sin código 301 00:14:14,129 --> 00:14:16,429 con lo cual me da igual 302 00:14:16,429 --> 00:14:18,309 ponerle llaves que cerrarlo con punto y coma 303 00:14:18,309 --> 00:14:18,789 es lo mismo 304 00:14:18,789 --> 00:14:22,309 lo metes en un while sin código y entonces ya 305 00:14:22,309 --> 00:14:23,470 ese remove se va haciendo 306 00:14:23,470 --> 00:14:25,990 tantas veces como necesite 307 00:14:25,990 --> 00:14:26,850 hasta llegar a fase 308 00:14:26,850 --> 00:14:29,669 ¿vale? entonces cada método 309 00:14:29,669 --> 00:14:31,529 cada método tiene sus peculiaridades 310 00:14:31,529 --> 00:14:33,210 sus particularidades en las listas 311 00:14:33,210 --> 00:14:35,850 es imposible conocer los detalles de funcionamiento 312 00:14:35,850 --> 00:14:36,389 de todos 313 00:14:36,389 --> 00:14:38,950 pero de algunos básicos 314 00:14:38,950 --> 00:14:41,490 relacionados con insertar, eliminar 315 00:14:41,490 --> 00:14:43,470 consultar, de algunos básicos 316 00:14:43,470 --> 00:14:45,889 si tenemos que conocer algunos detalles de funcionamiento 317 00:14:45,889 --> 00:14:47,970 pues todo esto 318 00:14:47,970 --> 00:14:49,470 pues es lo que luego en casa 319 00:14:49,470 --> 00:14:51,289 os repasáis, os miráis 320 00:14:51,289 --> 00:14:53,090 y os aseguráis de que ya lo 321 00:14:53,090 --> 00:14:54,370 lo incorporáis 322 00:14:54,370 --> 00:14:57,370 entonces si volvemos a ejecutar 323 00:14:57,370 --> 00:14:57,990 este código 324 00:14:57,990 --> 00:15:01,049 este método ahora pero metido en el while esto 325 00:15:01,049 --> 00:15:02,970 ya nos va a quitar 326 00:15:02,970 --> 00:15:04,210 todas las lenguas 327 00:15:04,210 --> 00:15:06,029 si es que lo hemos hecho bien 328 00:15:06,029 --> 00:15:08,590 metido lengua, mates y lengua 329 00:15:08,590 --> 00:15:11,789 vale 330 00:15:11,789 --> 00:15:14,769 volvemos a ejecutar esto 331 00:15:14,769 --> 00:15:18,529 espera un segundo 332 00:15:18,529 --> 00:15:20,549 veis ya me ha quitado todas las lenguas 333 00:15:20,549 --> 00:15:21,509 vale 334 00:15:21,509 --> 00:15:23,250 como sería con 335 00:15:23,250 --> 00:15:26,649 Ah, o el remove all 336 00:15:26,649 --> 00:15:30,350 Pues el remove all 337 00:15:30,350 --> 00:15:40,409 Sería igual, o sea, te borra todas 338 00:15:40,409 --> 00:15:41,649 ¿Vale? O sea, sería 339 00:15:41,649 --> 00:15:43,009 No lo meterías en un while 340 00:15:43,009 --> 00:15:45,009 Ah, que no estoy aquí, ya decía yo 341 00:15:45,009 --> 00:15:47,049 Claro, no estoy aquí 342 00:15:47,049 --> 00:15:49,789 Vale, entonces el remove all 343 00:15:49,789 --> 00:15:52,029 Cambiaríais este while 344 00:15:52,029 --> 00:15:54,029 Por todo esto y remove all ahí 345 00:15:54,029 --> 00:15:55,809 ¿Vale? 346 00:15:57,940 --> 00:15:59,580 ¿No te está dejando? Espérate, voy a hacerlo 347 00:15:59,580 --> 00:16:01,539 Que igual te lo estoy diciendo mal, vamos a ver 348 00:16:01,539 --> 00:16:21,120 remove all, a ver, los detalles del método, vamos a ver, alumnos.get y .get asignaturas, 349 00:16:21,120 --> 00:16:39,149 ah, es que como no estoy en el for, no me lo coge, a ver, no, pero espera, voy a abrir 350 00:16:39,149 --> 00:16:39,970 aquí una llave 351 00:16:39,970 --> 00:16:45,460 y así lo tengo todo junto 352 00:16:45,460 --> 00:16:47,759 vale, entonces con esto borraría todo 353 00:16:47,759 --> 00:16:50,000 y vamos a ver el remove all este 354 00:16:50,000 --> 00:16:50,419 como 355 00:16:50,419 --> 00:16:53,919 get i.get 356 00:16:53,919 --> 00:16:56,159 joder, tecladito de los 357 00:16:56,159 --> 00:16:57,860 venga 358 00:16:57,860 --> 00:16:59,919 get asignaturas que es una colección 359 00:16:59,919 --> 00:17:02,059 y ahora vamos a ver el remove 360 00:17:02,059 --> 00:17:02,440 all 361 00:17:02,440 --> 00:17:06,180 a ver, lo que pasa es que el remove all es otra cosa 362 00:17:06,180 --> 00:17:07,140 vale 363 00:17:07,140 --> 00:17:09,920 el remove all lo que te borra, tú le tienes que 364 00:17:09,920 --> 00:17:11,880 pasar un conjunto de objetos distintos 365 00:17:11,880 --> 00:17:15,240 Es decir, yo aquí le puedo pasar 366 00:17:15,240 --> 00:17:17,240 No sé si me va a dejar pasarle 367 00:17:17,240 --> 00:17:18,380 O lo tengo que inicializar 368 00:17:18,380 --> 00:17:20,619 Esto sería si le quiero pasar 369 00:17:20,619 --> 00:17:24,240 Es para otra cosa 370 00:17:24,240 --> 00:17:25,240 Vamos a ver 371 00:17:25,240 --> 00:17:28,519 Imagínate que quieres matricularle de lengua y de mates 372 00:17:28,519 --> 00:17:31,079 Le quieres matricularle de lengua y de mates 373 00:17:31,079 --> 00:17:32,279 Entonces 374 00:17:32,279 --> 00:17:34,079 Pero es otro uso 375 00:17:34,079 --> 00:17:35,980 ¿Vale? 376 00:17:35,980 --> 00:17:37,420 Entonces imagínate que yo le quiero 377 00:17:37,420 --> 00:17:38,880 Desmatricular de 378 00:17:38,880 --> 00:17:45,299 claro, no, no, claro 379 00:17:45,299 --> 00:17:47,640 claro, a ver 380 00:17:47,640 --> 00:17:49,039 pero esto es para borrar 381 00:17:49,039 --> 00:17:51,640 varios objetos distintos 382 00:17:51,640 --> 00:17:52,400 de la colección 383 00:17:52,400 --> 00:17:55,420 no, esto es el remove all 384 00:17:55,420 --> 00:17:56,980 es cuando tú quieres borrar 385 00:17:56,980 --> 00:17:59,559 varios objetos distintos de la colección 386 00:17:59,559 --> 00:18:01,519 es decir, quieres desmatricular a la vez 387 00:18:01,519 --> 00:18:02,279 de lengua y de mates 388 00:18:02,279 --> 00:18:05,460 pero es otra cosa diferente, por ejemplo 389 00:18:05,460 --> 00:18:07,980 imagínate que tú tienes aquí una lista de asignaturas 390 00:18:07,980 --> 00:18:09,400 de las que quieres borrarle 391 00:18:09,400 --> 00:18:11,500 a 6 392 00:18:11,500 --> 00:18:14,839 como que no 393 00:18:14,839 --> 00:18:17,640 vamos a ver, espera un momento, es que son cosas distintas 394 00:18:17,640 --> 00:18:20,880 vale 395 00:18:20,880 --> 00:18:23,279 vamos a hacerle una lista de asignaturas de las que queremos 396 00:18:23,279 --> 00:18:25,619 borrarle, entonces tú le quieres 397 00:18:25,619 --> 00:18:30,799 6.ad 398 00:18:30,799 --> 00:18:37,259 lengua 399 00:18:37,259 --> 00:18:44,400 a 6.ad 400 00:18:44,400 --> 00:18:53,470 y ahora ya le borras 401 00:18:53,470 --> 00:18:55,269 asics 402 00:18:55,269 --> 00:18:59,410 vale, a ver, este es el uso del remove all 403 00:18:59,410 --> 00:19:01,349 tú tienes varios objetos 404 00:19:01,349 --> 00:19:02,190 que quieres borrar 405 00:19:02,190 --> 00:19:04,809 quiero borrarle lengua, mates 406 00:19:04,809 --> 00:19:07,450 pues en lugar de ir uno por uno borrándoles uno por uno 407 00:19:07,450 --> 00:19:08,049 con el remove 408 00:19:08,049 --> 00:19:10,890 los metes una colección 409 00:19:10,890 --> 00:19:12,430 y le pasas la colección enterita 410 00:19:12,430 --> 00:19:15,470 vale, pero es otra idea 411 00:19:15,470 --> 00:19:17,390 diferente a esto, esto de aquí es que tú quieres 412 00:19:17,390 --> 00:19:19,509 eliminar la lengua, pero es que lengua te aparece 413 00:19:19,509 --> 00:19:21,029 varias veces, porque está duplicada. 414 00:19:21,750 --> 00:19:22,529 Entonces, el remove 415 00:19:22,529 --> 00:19:25,690 te elimina la primera ocurrencia. 416 00:19:25,849 --> 00:19:27,470 Si quieres que te las elimine todas, lo metes en un 417 00:19:27,470 --> 00:19:28,390 wall y te las elimina todas. 418 00:19:29,390 --> 00:19:31,490 Y el remove all es, cuando tú quieres 419 00:19:31,490 --> 00:19:32,529 varios objetos distintos. 420 00:19:33,450 --> 00:19:34,349 Lengua, mates y física. 421 00:19:34,869 --> 00:19:37,309 Los metes en una colección, lengua, mates y física 422 00:19:37,309 --> 00:19:39,390 y toda esa colección 423 00:19:39,390 --> 00:19:40,589 con objetos distintos 424 00:19:40,589 --> 00:19:42,609 se va aquí. 425 00:19:49,509 --> 00:19:52,890 No, a ver, si tienes cinco alumnos, tienes que irte alumno por alumno. 426 00:19:52,890 --> 00:19:56,769 Sí, pero es diferente, pero tendrás que hacer eso para cada alumno. 427 00:19:57,750 --> 00:20:01,170 O sea, si tú tienes cinco alumnos matriculados en lengua, 428 00:20:01,710 --> 00:20:04,089 tienes que hacer el remove para este, y el remove para este, 429 00:20:04,170 --> 00:20:05,410 el remove para este, el remove para este. 430 00:20:06,230 --> 00:20:07,410 Son cosas independientes. 431 00:20:10,410 --> 00:20:14,750 O sea, es que este de hecho me va a borrar, me va a desmatricular de lengua 432 00:20:14,750 --> 00:20:17,309 a todos los alumnos cuyo número de matrícula es esta. 433 00:20:17,789 --> 00:20:19,450 Si son cinco, me los voy a borrar de cinco. 434 00:20:19,509 --> 00:20:35,539 Efectivamente, quita todos los ítems 435 00:20:35,539 --> 00:20:37,519 Que están en esta colección de la lista 436 00:20:37,519 --> 00:20:39,400 Lo que estamos diciendo 437 00:20:39,400 --> 00:20:41,480 Te quita lengua y te quita mates 438 00:20:41,480 --> 00:20:44,400 Claro, es justo lo que hemos dicho 439 00:20:44,400 --> 00:20:48,839 Es decir, estos métodos son distintos 440 00:20:48,839 --> 00:20:50,680 Remove, te quita 441 00:20:50,680 --> 00:20:53,259 le das un único objeto 442 00:20:53,259 --> 00:20:56,000 la diferencia esencial es que a este le das uno solo 443 00:20:56,000 --> 00:20:57,880 y a este le das varios 444 00:20:57,880 --> 00:21:00,160 con lo cual a este le tienes que dar una colección 445 00:21:00,160 --> 00:21:02,279 a este le das uno 446 00:21:02,279 --> 00:21:03,700 y a este le das varios, es la primera diferencia 447 00:21:03,700 --> 00:21:06,220 vale, entonces a este le das uno 448 00:21:06,220 --> 00:21:08,019 ¿qué te hace con ese objeto? 449 00:21:08,640 --> 00:21:09,900 te borra de la lista 450 00:21:09,900 --> 00:21:12,200 el primero que se encuentra que es igual 451 00:21:12,200 --> 00:21:14,240 si en la lista hay otros 452 00:21:14,240 --> 00:21:15,299 que es igual no los toca 453 00:21:15,299 --> 00:21:18,019 con lo cual si tú quieres que te borre todos 454 00:21:18,019 --> 00:21:19,900 los que son igual a este al único 455 00:21:19,900 --> 00:21:21,960 que le das, lo metes en un guay 456 00:21:21,960 --> 00:21:23,460 y no pasa nada, vale 457 00:21:23,460 --> 00:21:26,039 este es otro método, a este no le pasas uno 458 00:21:26,039 --> 00:21:27,640 a este le pasas muchos 459 00:21:27,640 --> 00:21:30,099 muchos, y que es lo que 460 00:21:30,099 --> 00:21:31,799 hace, todos ellos 461 00:21:31,799 --> 00:21:33,960 sus primeras ocurrencias 462 00:21:33,960 --> 00:21:36,160 de todos ellos, te las borra de la lista 463 00:21:36,160 --> 00:21:38,160 este es cuando quieres borrar 464 00:21:38,160 --> 00:21:40,279 de golpe varios objetos 465 00:21:40,279 --> 00:21:41,839 de una única lista 466 00:21:41,839 --> 00:21:43,920 y este es cuando quieres borrar 467 00:21:43,920 --> 00:21:46,039 un único objeto, que quieres borrar 468 00:21:46,039 --> 00:21:47,319 un único objeto de esta lista 469 00:21:47,319 --> 00:21:49,559 este, que quieres borrar 470 00:21:49,559 --> 00:21:50,980 muchos objetos, este 471 00:21:50,980 --> 00:21:53,339 en ambos casos las primeras 472 00:21:53,339 --> 00:21:53,960 ocurrencias 473 00:21:53,960 --> 00:22:05,690 claro, pero es que 474 00:22:05,690 --> 00:22:06,150 es lo 475 00:22:06,150 --> 00:22:08,529 pero vamos a ver 476 00:22:08,529 --> 00:22:14,190 pero es que en cualquier caso, o sea, no es que sea 477 00:22:14,190 --> 00:22:16,029 penoso, es que no sea penoso, o sea, que es que 478 00:22:16,029 --> 00:22:17,569 ah, te había entendido 479 00:22:17,569 --> 00:22:20,250 ah, no, esto no tiene nada de 480 00:22:20,250 --> 00:22:22,289 peligroso, o sea, este 481 00:22:22,289 --> 00:22:24,230 while te va a ir llamando a remove 482 00:22:24,230 --> 00:22:27,049 Mientras haya hecho un eliminado 483 00:22:27,049 --> 00:22:27,970 Que no ha hecho ninguno 484 00:22:27,970 --> 00:22:29,009 Ya no te va a llamar a más 485 00:22:29,009 --> 00:22:32,190 O sea, este while en concreto no tiene nada de peligroso 486 00:22:32,190 --> 00:22:35,710 O sea, el remove te devuelve true o false 487 00:22:35,710 --> 00:22:37,650 ¿Vale? 488 00:22:38,369 --> 00:22:39,609 Y si te devuelve 489 00:22:39,609 --> 00:22:40,990 True 490 00:22:40,990 --> 00:22:42,690 Es cuando va a volver a entrar 491 00:22:42,690 --> 00:22:44,289 Entonces, ¿qué va a hacer? 492 00:22:44,650 --> 00:22:45,450 Intentar el remove 493 00:22:45,450 --> 00:22:46,970 Y el remove, si ya no encuentra ninguno 494 00:22:46,970 --> 00:22:48,190 No hace nada, te devuelve false 495 00:22:48,190 --> 00:22:58,170 Pues le quitas del while 496 00:22:58,170 --> 00:23:00,269 pues entonces no pones el while 497 00:23:00,269 --> 00:23:02,849 claro, pero tú tienes que saber 498 00:23:02,849 --> 00:23:04,269 qué quieres hacer en tu código 499 00:23:04,269 --> 00:23:06,769 o sea, tu código tiene que tener muy claros los requisitos 500 00:23:06,769 --> 00:23:08,289 entonces tú antes de programar 501 00:23:08,289 --> 00:23:12,009 a ver, sí, pero tú tienes que 502 00:23:12,009 --> 00:23:13,529 cuando tú programas esto 503 00:23:13,529 --> 00:23:18,319 pero vamos a ver 504 00:23:18,319 --> 00:23:18,880 pero tú cuando 505 00:23:18,880 --> 00:23:20,359 vale, escucha 506 00:23:20,359 --> 00:23:22,140 sí, pero escucha 507 00:23:22,140 --> 00:23:23,460 o sea, tú cuando escribes el código 508 00:23:23,460 --> 00:23:25,099 lo que tienes que saber es exactamente 509 00:23:25,099 --> 00:23:26,299 porque tú eres el analista 510 00:23:26,299 --> 00:23:27,500 exactamente qué quieres que haga 511 00:23:27,500 --> 00:23:28,099 entonces tú 512 00:23:28,099 --> 00:23:30,160 te habrás juntado con el tío y le habrás dicho 513 00:23:30,160 --> 00:23:31,759 oye, puede ocurrir 514 00:23:31,759 --> 00:23:34,519 que tú hayas matriculado de lengua 515 00:23:34,519 --> 00:23:35,839 dos veces a una persona 516 00:23:35,839 --> 00:23:38,079 eso puede ocurrir, él te dirá 517 00:23:38,079 --> 00:23:39,900 sí, tú te apuntas 518 00:23:39,900 --> 00:23:42,359 en la lista puede aparecer dos veces 519 00:23:42,359 --> 00:23:43,859 la misma asignatura, vale 520 00:23:43,859 --> 00:23:45,700 una vez que te lo has apuntado, vuelves y le dices 521 00:23:45,700 --> 00:23:47,900 cuando tú le desmatricules de lengua 522 00:23:47,900 --> 00:23:49,059 ¿qué quieres que ocurra? 523 00:23:49,839 --> 00:23:52,000 ¿que te desmatricules solo de la primera vez que lo hiciste? 524 00:23:52,420 --> 00:23:53,640 ¿o te desmatricule de todas? 525 00:23:53,839 --> 00:23:55,960 dice, no, quiero que me desmatricule solo 526 00:23:55,960 --> 00:23:57,359 de la primera vez que se encuentre 527 00:23:57,359 --> 00:24:00,460 te lo apuntas y tú programas con lo que él te ha dicho. 528 00:24:01,160 --> 00:24:03,200 Ah, no, pues quiero que me detecte si hay duplicado 529 00:24:03,200 --> 00:24:04,299 y si los hay que lo arregle. 530 00:24:04,460 --> 00:24:05,900 Vale, pues tú te haces la funcionalidad. 531 00:24:06,940 --> 00:24:09,640 Tú tienes que programar lo que a ti te hayan pedido que hagas. 532 00:24:10,440 --> 00:24:12,240 Entonces, lo que se trata es de entender 533 00:24:12,240 --> 00:24:14,059 qué hace este método y cómo usarlo. 534 00:24:14,720 --> 00:24:18,660 Pero claro, tú te habrás juntado con el que te lo ha pedido 535 00:24:18,660 --> 00:24:21,619 y te haya dicho, oye, cuando yo le dé al botón desmatricular 536 00:24:21,619 --> 00:24:24,740 quiero que pase esto y tú programas eso. 537 00:24:25,240 --> 00:24:26,700 O sea, no es que sea mejor o peor, 538 00:24:26,700 --> 00:24:27,759 es lo que él te haya pedido 539 00:24:27,759 --> 00:24:30,519 ¿vale? lo que él te haya pedido 540 00:24:30,519 --> 00:24:32,680 y si aparecen 541 00:24:32,680 --> 00:24:34,700 tres veces lengua, imagínate que aparecen 542 00:24:34,700 --> 00:24:36,680 cinco veces lengua, si tú no pones 543 00:24:36,680 --> 00:24:38,599 el while, te borra la primera 544 00:24:38,599 --> 00:24:40,619 y sigue quedando cuatro veces lengua, tú le dices 545 00:24:40,619 --> 00:24:41,960 oye, ¿es eso lo que quieres? 546 00:24:42,559 --> 00:24:44,519 no, quiero que me hagas mejor un método 547 00:24:44,519 --> 00:24:46,740 que me detecte si está matriculado de una varias veces 548 00:24:46,740 --> 00:24:47,940 y me lo arregles, ah, vale 549 00:24:47,940 --> 00:24:49,900 pues te hago el método que te haga eso 550 00:24:49,900 --> 00:24:52,539 es que, claro, partimos de la base de que 551 00:24:52,539 --> 00:24:54,839 uno tiene que tener muy muy muy claro, porque lo ha acordado 552 00:24:54,839 --> 00:24:57,059 con el que le ha pedido, ¿qué quieres hacer? 553 00:24:57,359 --> 00:24:58,980 Ahora mismo lo que nos importa a nosotros 554 00:24:58,980 --> 00:25:00,819 es cómo funciona este método 555 00:25:00,819 --> 00:25:03,039 y cómo usarlo. Entonces, remove, 556 00:25:03,200 --> 00:25:04,700 le pasas un objeto, te borra 557 00:25:04,700 --> 00:25:06,400 la primera ocurrencia igual a él. 558 00:25:07,259 --> 00:25:08,460 ¿Que tú quieres eso? Estupendo. 559 00:25:09,140 --> 00:25:10,880 ¿Que quieres borrar todas las 560 00:25:10,880 --> 00:25:13,000 iguales? Lo metes en un while 561 00:25:13,000 --> 00:25:14,839 y tú ya 562 00:25:14,839 --> 00:25:15,859 usas eso como quieras. 563 00:25:16,720 --> 00:25:16,920 ¿Vale? 564 00:25:18,779 --> 00:25:20,559 ¿Que quieres borrar las dos primeras 565 00:25:20,559 --> 00:25:22,900 ocurrencias? Pues ni una ni la otra. 566 00:25:23,099 --> 00:25:23,839 No puedes hacerlo así. 567 00:25:23,839 --> 00:25:26,160 pues tendrás que 568 00:25:26,160 --> 00:25:28,680 con un contador, cuando ya hayas borrado 569 00:25:28,680 --> 00:25:30,220 dos, sal de este while 570 00:25:30,220 --> 00:25:32,640 por ejemplo, tú ya programas lo que te hayan pedido 571 00:25:32,640 --> 00:25:34,619 ¿vale? programas lo que te hayan pedido 572 00:25:34,619 --> 00:25:36,940 pero claro 573 00:25:36,940 --> 00:25:38,900 hay que tener 574 00:25:38,900 --> 00:25:40,460 muy muy muy muy claro cuando se hace 575 00:25:40,460 --> 00:25:42,539 una aplicación entera de principio a fin antes de empezar 576 00:25:42,539 --> 00:25:44,200 a programarla, muy muy muy claro 577 00:25:44,200 --> 00:25:46,980 exactamente que tiene que hacer 578 00:25:46,980 --> 00:25:48,579 exactamente que tiene que hacer 579 00:25:48,579 --> 00:25:50,940 y eso el que te la pide 580 00:25:50,940 --> 00:25:51,579 es el que te lo dice 581 00:25:51,579 --> 00:25:53,680 Oye, yo quiero que sea esto lo que haga 582 00:25:53,680 --> 00:26:03,190 Esto lo vamos a poner así 583 00:26:03,190 --> 00:26:05,210 Por ejemplo, para que 584 00:26:05,210 --> 00:26:09,710 Si quisiéramos borrar varias asignaturas de golpe 585 00:26:09,710 --> 00:26:27,279 Pues si quisiéramos borrar varias de golpe 586 00:26:27,279 --> 00:26:29,920 Puedo meterle todas esas de golpe 587 00:26:29,920 --> 00:26:30,859 Pero una colección 588 00:26:30,859 --> 00:26:32,500 En esta le meto solo una 589 00:26:32,500 --> 00:26:36,680 Si quisiéramos borrar varias de golpe 590 00:26:36,680 --> 00:26:38,640 Lo pongo aquí 591 00:26:38,640 --> 00:26:48,380 Vale, pues entonces 592 00:26:48,380 --> 00:26:50,500 el remove, estos son sus detalles de funcionamiento 593 00:26:50,500 --> 00:26:52,079 estos son, y uno ya los aplica 594 00:26:52,079 --> 00:26:52,759 como quiera 595 00:26:52,759 --> 00:26:56,380 en este caso no hemos tenido complicaciones 596 00:26:56,380 --> 00:26:58,240 porque eran listas 597 00:26:58,240 --> 00:27:00,299 de cadenas, porque estábamos trabajando con la lista 598 00:27:00,299 --> 00:27:01,960 de asignaturas, ahí está la asignatura 599 00:27:01,960 --> 00:27:02,900 las asignaturas eran cadenas 600 00:27:02,900 --> 00:27:06,099 cuidado cuando estamos trabajando 601 00:27:06,099 --> 00:27:07,680 con listas de otras cosas 602 00:27:07,680 --> 00:27:10,039 que hemos hecho nosotros 603 00:27:10,039 --> 00:27:12,299 por ejemplo, vamos a hacernos 604 00:27:12,299 --> 00:27:13,279 un método para 605 00:27:13,279 --> 00:27:15,980 eliminar a un alumno, eliminar a un alumno 606 00:27:15,980 --> 00:27:18,240 de la lista, porque tenemos el de insertar alumno 607 00:27:18,240 --> 00:27:21,420 este, insertar alumno 608 00:27:21,420 --> 00:27:25,299 pero no tenemos uno que elimine un alumno 609 00:27:25,299 --> 00:27:27,440 vamos a hacerlo el de eliminar un alumno de la lista 610 00:27:27,440 --> 00:27:43,359 static, otra vez se me ha olvidado 611 00:27:43,359 --> 00:27:48,750 eliminar alumno 612 00:27:48,750 --> 00:27:49,890 vale, entonces 613 00:27:49,890 --> 00:27:58,309 eliminar alumno dado el número de matrícula 614 00:27:58,309 --> 00:28:05,440 vale, pues lo mismo 615 00:28:05,440 --> 00:28:08,940 tenemos que localizar al alumno 616 00:28:08,940 --> 00:28:10,339 con este número de matrícula 617 00:28:10,339 --> 00:28:15,089 y lo eliminamos 618 00:28:15,089 --> 00:28:17,930 pero aquí es mucho más fácil porque el método remove 619 00:28:17,930 --> 00:28:20,029 yo le doy 620 00:28:20,029 --> 00:28:21,309 alumnos remove 621 00:28:21,309 --> 00:28:23,950 y le paso un alumno con ese 622 00:28:23,950 --> 00:28:25,130 número de matrícula 623 00:28:25,130 --> 00:28:27,829 me hago un alumno auxiliar 624 00:28:27,829 --> 00:28:30,089 aquí, new alumno 625 00:28:30,089 --> 00:28:34,099 es que como no tengo el 626 00:28:34,099 --> 00:28:36,079 constructor solo con número de matrícula 627 00:28:36,079 --> 00:28:38,259 y le pego el número de matrícula 628 00:28:38,259 --> 00:28:41,380 que es este 629 00:28:41,380 --> 00:28:53,170 ala, pues ya lo tendría 630 00:28:53,170 --> 00:28:55,369 ¿qué hace el remove? 631 00:28:55,490 --> 00:28:56,690 con lo que hemos dicho antes 632 00:28:56,690 --> 00:28:57,890 ¿remove qué hace? 633 00:28:58,490 --> 00:29:01,869 te busca un alumno igual que este 634 00:29:01,869 --> 00:29:03,750 un objeto igual que este 635 00:29:03,750 --> 00:29:06,130 y en cuanto encuentra un objeto igual que este 636 00:29:06,130 --> 00:29:06,630 te lo borra 637 00:29:06,630 --> 00:29:07,710 eso es lo que hace el remove 638 00:29:07,710 --> 00:29:08,650 tal cual 639 00:29:08,650 --> 00:29:11,349 busca en la lista 640 00:29:11,349 --> 00:29:13,990 el primer objeto que se encuentra 641 00:29:13,990 --> 00:29:15,009 igualito que este 642 00:29:15,009 --> 00:29:17,890 y en cuanto encuentra un objeto igualito que este 643 00:29:17,890 --> 00:29:18,190 fuera 644 00:29:18,190 --> 00:29:20,970 pues como el equals nuestro de alumno 645 00:29:20,970 --> 00:29:23,250 está en función de un matrícula 646 00:29:23,250 --> 00:29:25,089 me hago yo uno cualquiera 647 00:29:25,089 --> 00:29:26,970 con este número de matrícula y se lo paso 648 00:29:26,970 --> 00:29:28,849 pues remove 649 00:29:28,849 --> 00:29:31,309 en cuanto encuentre un objeto en la lista 650 00:29:31,309 --> 00:29:32,609 igualito que este 651 00:29:32,609 --> 00:29:34,710 o lo que es lo mismo, que su matrícula es la misma 652 00:29:34,710 --> 00:29:35,789 porque el igual es igual 653 00:29:35,789 --> 00:29:37,269 pues lo va a borrar 654 00:29:37,269 --> 00:29:40,009 pues ya está, no tengo que hacer for ni nada 655 00:29:40,009 --> 00:29:42,910 este de aquí 656 00:29:42,910 --> 00:29:45,589 me borra el primer alumno con ese número de matrícula 657 00:29:45,589 --> 00:29:47,269 solo el primero 658 00:29:47,269 --> 00:29:48,970 si yo quiero borrar 659 00:29:48,970 --> 00:29:50,930 a todos los que tienen ese número de matrícula 660 00:29:50,930 --> 00:29:53,170 si estuviera más de uno, lo metería en un while 661 00:29:53,170 --> 00:29:55,269 ¿vale? 662 00:29:58,680 --> 00:29:59,720 luego el remove ya te hace 663 00:29:59,720 --> 00:30:00,380 el for dentro 664 00:30:00,380 --> 00:30:03,539 que no, que no, que no 665 00:30:03,539 --> 00:30:05,299 si lo que ves es que a veces no entiendo bien 666 00:30:05,299 --> 00:30:06,119 lo que me decís 667 00:30:06,119 --> 00:30:11,619 pero para, ¿y qué mete en esa colección? 668 00:30:11,720 --> 00:30:13,339 si es que solo tengo un dato, que es el número de 669 00:30:13,339 --> 00:30:14,220 eso lo quiero borrar 670 00:30:14,220 --> 00:30:17,380 pero una colección de un elemento, ¿para qué? 671 00:30:17,460 --> 00:30:19,059 si ya tengo un remove que le pasa un elemento 672 00:30:19,059 --> 00:30:21,599 a ver, que el remove all también te borra 673 00:30:21,599 --> 00:30:23,740 primeras ocurrencias de cada uno que le pasas. 674 00:30:24,200 --> 00:30:25,559 O sea, no arreglas lo del while tampoco. 675 00:30:26,099 --> 00:30:27,519 O sea, el remove all, lo que 676 00:30:27,519 --> 00:30:29,559 tú le puedes hacer es pasarle varios a la vez. 677 00:30:30,059 --> 00:30:31,480 Pero de cada uno de esos varios 678 00:30:31,480 --> 00:30:33,019 te borra la primera ocurrencia solo. 679 00:30:33,700 --> 00:30:35,299 Es decir, imagínate que tú tienes 680 00:30:35,299 --> 00:30:36,740 lengua, lengua, mates, mates. 681 00:30:38,079 --> 00:30:39,500 Claro, y le pasas lengua y mates. 682 00:30:40,000 --> 00:30:41,640 Te borra la primera ocurrencia de lengua y la primera 683 00:30:41,640 --> 00:30:43,440 de mates. O sea, que son problemas distintos. 684 00:30:43,880 --> 00:30:43,980 ¿Vale? 685 00:30:45,200 --> 00:30:47,660 Entonces, aquí lo importante del remove es que recordéis 686 00:30:47,660 --> 00:30:48,940 que él ya te hace el for dentro. 687 00:30:50,039 --> 00:30:51,180 Y va recorriendo 688 00:30:51,180 --> 00:30:52,799 y cuando encuentra un objeto 689 00:30:52,799 --> 00:30:55,279 igual que este, lo elimina 690 00:30:55,279 --> 00:30:56,720 y ya está 691 00:30:56,720 --> 00:30:58,920 pero claro 692 00:30:58,920 --> 00:31:00,559 hay que asegurarse de que 693 00:31:00,559 --> 00:31:03,400 el criterio de igualdad está en la clase 694 00:31:03,400 --> 00:31:05,140 correspondiente, en nuestro caso 695 00:31:05,140 --> 00:31:06,940 alumno, como está el criterio de igualdad 696 00:31:06,940 --> 00:31:08,900 funcionaría perfectamente 697 00:31:08,900 --> 00:31:11,200 ¿vale? 698 00:31:18,400 --> 00:31:19,500 vamos a probarlo 699 00:31:19,500 --> 00:31:20,099 en el main 700 00:31:20,099 --> 00:31:26,759 vamos a meterle dos alumnos 701 00:31:26,759 --> 00:31:29,039 y eliminamos uno 702 00:31:29,039 --> 00:31:44,970 ¿vale? vamos a mostrar 703 00:31:44,970 --> 00:32:11,500 aquí los alumnos que hay operaciones.alumnos a.getNombre y vamos a mostrarlo antes y luego 704 00:32:11,500 --> 00:32:40,730 después de haberlos borrado. Esto era operaciones.eliminaAlumno, el de dos. Vale, vamos a ejecutarlo. Vale, 705 00:32:40,730 --> 00:32:42,049 estos eran los dos alumnos 706 00:32:42,049 --> 00:32:44,829 y después de haber eliminado 707 00:32:44,829 --> 00:32:46,910 el segundo, pues solo está 708 00:32:46,910 --> 00:32:47,109 este. 709 00:32:48,569 --> 00:32:54,069 ¿Vale? Pero como última 710 00:32:54,069 --> 00:32:55,970 comprobación, como yo quite el 711 00:32:55,970 --> 00:32:57,450 equals de aquí, 712 00:32:58,470 --> 00:32:59,650 el remove ya no funciona. 713 00:33:01,390 --> 00:33:02,089 Si yo 714 00:33:02,089 --> 00:33:03,450 comento el equals este 715 00:33:03,450 --> 00:33:05,150 de alumno, 716 00:33:08,210 --> 00:33:09,509 comento el equals de alumno, 717 00:33:13,829 --> 00:33:15,650 al haber comentado el equals, el remove, 718 00:33:15,890 --> 00:33:17,710 su criterio de igualdad ya no es la igualdad 719 00:33:17,710 --> 00:33:19,490 de matrícula, porque he quitado el equals 720 00:33:19,490 --> 00:33:21,509 de alumno, entonces el remove 721 00:33:21,509 --> 00:33:23,329 su criterio de igualdad es el de object 722 00:33:23,329 --> 00:33:25,609 que es misma dirección de memoria, luego no va a encontrar 723 00:33:25,609 --> 00:33:26,390 uno igual que ese 724 00:33:26,390 --> 00:33:29,630 así que si yo quito el equals de alumno 725 00:33:29,630 --> 00:33:31,589 se me ha olvidado hacer y no lo tengo 726 00:33:31,589 --> 00:33:33,589 me creo que esto elimina 727 00:33:33,589 --> 00:33:35,970 y efectivamente no ha eliminado 728 00:33:35,970 --> 00:33:37,569 el código 729 00:33:37,569 --> 00:33:38,650 de mi aplicación es la misma 730 00:33:38,650 --> 00:33:41,210 y uno se pone a pelearse con la aplicación 731 00:33:41,210 --> 00:33:43,529 que he hecho mal, que he hecho mal, no está el problema en la aplicación 732 00:33:43,529 --> 00:33:45,450 el problema está en que alumno no tiene 733 00:33:45,450 --> 00:33:47,329 el equals, entonces si alumno no tiene 734 00:33:47,329 --> 00:33:49,130 el equals, remove jamás va a encontrar 735 00:33:49,130 --> 00:33:52,470 al alumno, ¿vale? 736 00:33:53,730 --> 00:33:56,410 Pues eso, importancia de los equals en 737 00:33:56,410 --> 00:34:01,029 colecciones, si no los métodos no funcionan 738 00:34:01,029 --> 00:34:04,609 funcionan pero mal, ¿vale?