1 00:00:00,050 --> 00:00:03,609 Venga, vamos a intentar ser rápidos 2 00:00:03,609 --> 00:00:04,690 Para que nos junde el tiempo 3 00:00:04,690 --> 00:00:08,929 Ejercicio 2 4 00:00:08,929 --> 00:00:10,289 A ver 5 00:00:10,289 --> 00:00:13,449 Una clase 6 00:00:13,449 --> 00:00:14,869 Es más sencillo que el 1 7 00:00:14,869 --> 00:00:17,210 Porque solamente tiene 8 00:00:17,210 --> 00:00:19,230 Dos clases 9 00:00:19,230 --> 00:00:21,170 Bueno 10 00:00:21,170 --> 00:00:23,370 Ese también tenía dos 11 00:00:23,370 --> 00:00:24,690 Pero era un poquito más lioso 12 00:00:24,690 --> 00:00:28,250 Una discoteca que tiene un montón de discos 13 00:00:28,250 --> 00:00:29,010 Y se acabó 14 00:00:29,010 --> 00:00:54,390 vale, nada más, y ahora ya vamos a hacer las cosas con los discos que hay ahí dentro, o sea, una tonterita, vale, pero el problema es cuando eliminamos de una colección, eliminamos de una colección, no por la clave primaria, no por el equals, porque si eliminamos por el equals hacemos remove y listo, si no eliminamos por el equals es el problema, vale, pues venga, vamos a hacernos estas clases, 15 00:00:54,390 --> 00:00:56,469 Primero disco, que es la que depende 16 00:00:56,469 --> 00:00:58,649 De la que depende la discoteca esa 17 00:00:58,649 --> 00:01:00,549 Eso 18 00:01:00,549 --> 00:01:02,890 Entonces la clase disco 19 00:01:02,890 --> 00:01:04,790 Que tenía como propiedades 20 00:01:04,790 --> 00:01:05,950 El título y autor 21 00:01:05,950 --> 00:01:07,150 Imagino 22 00:01:07,150 --> 00:01:15,209 Sí, disco 23 00:01:15,209 --> 00:01:16,469 Vosotros como ya este concierto 24 00:01:16,469 --> 00:01:18,349 Vosotros tenéis las canciones 25 00:01:18,349 --> 00:01:20,510 De streaming, que uno saca una canción 26 00:01:20,510 --> 00:01:21,670 Y ya está, y se acabó 27 00:01:21,670 --> 00:01:23,329 Antes no, antes las cosas se curraban 28 00:01:23,329 --> 00:01:25,209 Y sacabas un disco completo 29 00:01:25,209 --> 00:01:28,390 y no te ponías ahí en streaming 30 00:01:28,390 --> 00:01:29,989 a hacer el tonto y el idiota 31 00:01:29,989 --> 00:01:30,769 como se hace ahora 32 00:01:30,769 --> 00:01:33,069 me desahogo 33 00:01:33,069 --> 00:01:38,189 es que esto de banalizar la cultura 34 00:01:38,189 --> 00:01:40,129 como se está haciendo me pone muy nerviosa 35 00:01:40,129 --> 00:01:43,730 déjame que me desahogue 36 00:01:55,209 --> 00:01:56,650 Sí 37 00:01:56,650 --> 00:02:01,590 Vale, pues ya está 38 00:02:01,590 --> 00:02:03,950 Tenemos el disco con sus dos propiedades 39 00:02:03,950 --> 00:02:07,609 Por supuesto, aquí no nos paramos ya 40 00:02:07,609 --> 00:02:09,789 Silencio, con los constructores 41 00:02:09,789 --> 00:02:11,449 Getty Set, no me para decir nada 42 00:02:11,449 --> 00:02:12,469 Los ponemos y ya está 43 00:02:12,469 --> 00:02:14,389 Que tampoco 44 00:02:14,389 --> 00:02:17,750 Vale, y ahora 45 00:02:17,750 --> 00:02:19,490 La discoteca que tiene la temática 46 00:02:19,490 --> 00:02:21,030 Y los discos, y ya está 47 00:02:21,030 --> 00:02:22,689 Constructores Getty Setter 48 00:02:22,689 --> 00:02:24,509 y ya iremos poniéndolos 49 00:02:24,509 --> 00:02:26,610 igual los jascos, todo eso según nos vaya 50 00:02:26,610 --> 00:02:27,669 pidiendo el cuerpo 51 00:02:27,669 --> 00:02:30,509 si hombre, siempre 52 00:02:30,509 --> 00:02:32,229 hacemos constructores getter y setter 53 00:02:32,229 --> 00:02:34,710 y la verdad es que si generamos 54 00:02:34,710 --> 00:02:36,310 siempre por sistema los toStream 55 00:02:36,310 --> 00:02:37,449 pues mejor 56 00:02:37,449 --> 00:02:39,469 venga 57 00:02:39,469 --> 00:02:43,889 porque estoy idiota 58 00:02:43,889 --> 00:02:46,150 pero no pasa nada 59 00:02:46,150 --> 00:02:48,250 voy a refactorizar 60 00:02:48,250 --> 00:02:50,030 aunque el getty set no me la refactoriza 61 00:02:50,030 --> 00:02:50,949 así que cuidadín 62 00:02:50,949 --> 00:02:52,689 Autor 63 00:02:52,689 --> 00:02:56,009 Vale, entonces 64 00:02:56,009 --> 00:02:59,650 Autor 65 00:02:59,650 --> 00:03:15,969 Autor 66 00:03:15,969 --> 00:03:17,669 Y set autor 67 00:03:28,500 --> 00:03:29,099 Vale 68 00:03:29,099 --> 00:03:30,300 Pues ya está todo 69 00:03:30,300 --> 00:03:32,000 en el constructor 70 00:03:32,000 --> 00:03:33,960 autor y título 71 00:03:33,960 --> 00:03:36,599 autor, autor y título 72 00:03:36,599 --> 00:03:37,840 vale, ya está 73 00:03:37,840 --> 00:03:39,699 entonces mira, ya que he vuelto a entrar en esta clase 74 00:03:39,699 --> 00:03:41,800 y no nos cuesta nada, vamos a hacer un toString 75 00:03:41,800 --> 00:03:43,539 porque cuando lo pasamos a un system.out 76 00:03:43,539 --> 00:03:46,500 es más bonito lo que nos saca 77 00:03:46,500 --> 00:03:47,340 como ya sabemos 78 00:03:47,340 --> 00:03:50,159 ¿vale? o sea, otro ejemplo 79 00:03:50,159 --> 00:03:51,099 del polimorfismo 80 00:03:51,099 --> 00:03:54,020 el toString es un método 81 00:03:54,020 --> 00:03:56,199 al que llama el system.out.println 82 00:03:56,199 --> 00:03:57,099 cuando lo pasamos a un objeto 83 00:03:57,099 --> 00:03:59,599 y llamará al toString de ese objeto 84 00:03:59,599 --> 00:04:01,939 entonces es un ejemplo más de polimorfismo 85 00:04:01,939 --> 00:04:04,060 el tuestring funciona diferente en alumno 86 00:04:04,060 --> 00:04:05,740 en disco, en no sé qué 87 00:04:05,740 --> 00:04:12,500 si escucharas 88 00:04:12,500 --> 00:04:14,659 vale, ahora la otra clase 89 00:04:14,659 --> 00:04:21,339 este, que nombre más feo 90 00:04:21,339 --> 00:04:21,879 pero bueno 91 00:04:21,879 --> 00:04:24,160 sí, un nombre muy feo 92 00:04:24,160 --> 00:04:28,120 que si no me gustaban 93 00:04:28,120 --> 00:04:29,860 ¿por qué habláis en pasado? 94 00:04:30,040 --> 00:04:31,480 si yo sé que soy muy mayor 95 00:04:31,480 --> 00:04:33,980 pero todavía puedo ir a discotecas 96 00:04:33,980 --> 00:04:35,240 te lo digo, en serio 97 00:04:35,240 --> 00:04:37,959 y seguramente haga muchas más cosas 98 00:04:37,959 --> 00:04:38,920 que tú en la discoteca 99 00:04:38,920 --> 00:04:43,639 es que de verdad 100 00:04:43,639 --> 00:04:44,860 a ver si es freje 101 00:04:44,860 --> 00:04:46,740 la vida se acaba 102 00:04:46,740 --> 00:04:49,879 vale 103 00:04:49,879 --> 00:04:56,240 venga, entonces 104 00:04:56,240 --> 00:04:58,339 vamos a hacer que sea 105 00:04:58,339 --> 00:05:00,120 un conjunto 106 00:05:00,120 --> 00:05:00,800 una lista 107 00:05:00,800 --> 00:05:02,399 que 108 00:05:02,399 --> 00:05:05,139 ¿qué colección 109 00:05:05,139 --> 00:05:06,240 os es más incómoda? 110 00:05:08,160 --> 00:05:09,300 Conjunto, dice conjunto 111 00:05:09,300 --> 00:05:11,139 y lo habéis hecho con conjunto, pues vamos a hacerlo 112 00:05:11,139 --> 00:05:11,759 con conjunto 113 00:05:11,759 --> 00:05:15,199 conjunto sería siempre la opción natural 114 00:05:15,199 --> 00:05:16,959 por defecto porque es más sencilla 115 00:05:16,959 --> 00:05:18,699 de implementar, un segundo 116 00:05:18,699 --> 00:05:20,839 pero si necesitamos 117 00:05:20,839 --> 00:05:23,180 las posiciones porque me son interesantes 118 00:05:23,180 --> 00:05:25,120 para algo, pues haríamos una lista 119 00:05:25,120 --> 00:05:26,439 ¿vale? dime 120 00:05:26,439 --> 00:05:31,399 ya, es que me ponéis nerviosa 121 00:05:31,399 --> 00:05:32,439 Pues cambio las cosas 122 00:05:32,439 --> 00:05:36,680 Venga, set 123 00:05:36,680 --> 00:05:38,779 De disco 124 00:05:38,779 --> 00:05:41,100 Vale, los discos que tiene 125 00:05:41,100 --> 00:05:43,019 Aquí lo mismo 126 00:05:43,019 --> 00:05:45,339 Es buena práctica instanciarlo aquí 127 00:05:45,339 --> 00:05:47,379 Para que ya directamente haya una colección vacía 128 00:05:47,379 --> 00:05:49,680 Me ahorro null pointer exception cuando añade el primero 129 00:05:49,680 --> 00:05:50,180 Etcétera 130 00:05:50,180 --> 00:05:52,560 ¿Cuál nos gusta? ¿Hashet? ¿Treset? 131 00:05:53,420 --> 00:05:53,939 Hashet 132 00:05:53,939 --> 00:05:57,279 Vale, y luego vamos a rápidamente a cambiarlo en treset 133 00:05:57,279 --> 00:05:59,180 A ver qué cambiaría en el ejercicio 134 00:05:59,180 --> 00:06:00,939 Si uno decide que lo cambie a treset 135 00:06:00,939 --> 00:06:03,139 ¿vale? porque de cambiarlo 136 00:06:03,139 --> 00:06:04,740 a linked hash no cambiaría nada 137 00:06:04,740 --> 00:06:05,939 absolutamente nada 138 00:06:05,939 --> 00:06:08,540 pues venga 139 00:06:08,540 --> 00:06:10,379 importamos 140 00:06:10,379 --> 00:06:12,699 vale 141 00:06:12,699 --> 00:06:14,300 en entidades como estas 142 00:06:14,300 --> 00:06:16,360 está bien hacer un constructor 143 00:06:16,360 --> 00:06:18,920 con las propiedades que no sean colección 144 00:06:18,920 --> 00:06:21,040 porque normalmente cuando yo instancio 145 00:06:21,040 --> 00:06:22,899 una discoteca la instanciaré primero 146 00:06:22,899 --> 00:06:24,620 con una temática y discos vacíos 147 00:06:24,620 --> 00:06:26,000 y luego ya voy metiendo, es lo normal 148 00:06:26,000 --> 00:06:28,779 entonces bueno, es habitual hacer un 149 00:06:28,779 --> 00:06:30,600 constructor solo con 150 00:06:30,600 --> 00:06:32,560 Esta propiedad 151 00:06:32,560 --> 00:06:34,680 Ya los discos los iré metiendo después 152 00:06:34,680 --> 00:06:37,079 Uno sin parámetros porque me facilita 153 00:06:37,079 --> 00:06:37,579 La vida 154 00:06:37,579 --> 00:06:40,560 Seguramente en algunas situaciones 155 00:06:40,560 --> 00:06:46,100 Y 156 00:06:46,100 --> 00:06:50,850 Y 157 00:06:50,850 --> 00:06:53,069 Vale 158 00:06:53,069 --> 00:06:56,610 Y un to stream, ya que nos ponemos 159 00:06:56,610 --> 00:06:58,310 Un to stream 160 00:06:58,310 --> 00:07:00,529 Bueno, aunque mirar la discoteca vamos a hacer 161 00:07:00,529 --> 00:07:02,310 Vamos a mirar los discos, va, pasamos del to stream 162 00:07:02,310 --> 00:07:03,410 Para no perder tiempo 163 00:07:03,410 --> 00:07:06,029 vale, no he puesto ni Haskell 164 00:07:06,029 --> 00:07:06,910 ni Equals ni nada 165 00:07:06,910 --> 00:07:10,069 aunque nos podríamos adelantar desde ya porque no perdemos nada 166 00:07:10,069 --> 00:07:11,850 pero vamos a hacerlo cuando ya identifiquemos 167 00:07:11,850 --> 00:07:13,129 que es que es imprescindible 168 00:07:13,129 --> 00:07:15,709 vale, pues estas entidades 169 00:07:15,709 --> 00:07:17,769 no tienen métodos propios, aquí estaría 170 00:07:17,769 --> 00:07:19,170 muy bien hacer un método que fuera 171 00:07:19,170 --> 00:07:21,529 pues agregar un disco a la discoteca 172 00:07:21,529 --> 00:07:23,870 pero bueno, es que eso es hacerle un 173 00:07:23,870 --> 00:07:25,870 add, tampoco tiene más rollo 174 00:07:25,870 --> 00:07:27,110 ¿no? pero 175 00:07:27,110 --> 00:07:28,889 para que no se nos vayan olvidando 176 00:07:28,889 --> 00:07:31,810 bueno, no, porque si no os cambio el ejercicio 177 00:07:31,810 --> 00:07:34,529 iba a poner un método que fuera 178 00:07:34,529 --> 00:07:35,269 agregar disco 179 00:07:35,269 --> 00:07:37,709 que tuviera dentro 180 00:07:37,709 --> 00:07:38,610 lo único que tendría dentro es una 181 00:07:38,610 --> 00:07:39,290 ya está 182 00:07:39,290 --> 00:07:44,329 pero bueno suele ser el diseño habitual 183 00:07:44,329 --> 00:07:45,490 que la clase 184 00:07:45,490 --> 00:07:47,769 tenga sus propios 185 00:07:47,769 --> 00:07:49,889 ofrezca los métodos 186 00:07:49,889 --> 00:07:52,149 como la propiedad discos es privada 187 00:07:52,149 --> 00:07:54,230 pues que tú no tengas que hacerlo 188 00:07:54,230 --> 00:07:56,269 con un get desde el otro sitio 189 00:07:56,269 --> 00:07:57,649 y luego añadir 190 00:07:57,649 --> 00:07:59,410 sino que te ofrezca lo que tú 191 00:07:59,410 --> 00:08:01,670 lo que tú quieras hacer, agregar disco 192 00:08:01,670 --> 00:08:08,509 A ver, porque tú podrías 193 00:08:08,509 --> 00:08:09,430 Quitar el get 194 00:08:09,430 --> 00:08:12,209 Y ocultar toda tu implementación interna 195 00:08:12,209 --> 00:08:13,810 Ocultar que es un set, que es una lista 196 00:08:13,810 --> 00:08:15,649 Entonces si la ocultas 197 00:08:15,649 --> 00:08:18,230 Tienes ya que publicar tú en métodos propios 198 00:08:18,230 --> 00:08:19,269 Lo que tú dejas hacer 199 00:08:19,269 --> 00:08:20,610 Agregar un disco, no sé qué 200 00:08:20,610 --> 00:08:23,449 Entonces estás ocultando si es un set, una lista, lo que sea 201 00:08:23,449 --> 00:08:25,490 Entonces es un diseño habitual 202 00:08:25,490 --> 00:08:26,589 Pero en nuestro caso 203 00:08:26,589 --> 00:08:29,170 Como nos pueden coger el set 204 00:08:29,170 --> 00:08:30,029 Desde el get 205 00:08:30,029 --> 00:08:32,269 vale, pues venga 206 00:08:32,269 --> 00:08:34,409 un main con estas funcionalidades 207 00:08:34,409 --> 00:08:36,049 de aquí, pues ala 208 00:08:36,049 --> 00:08:36,769 vamos allá 209 00:08:36,769 --> 00:08:48,289 vale, las funcionalidades las vamos a poner como métodos 210 00:08:48,289 --> 00:08:49,610 aparte para probarlas 211 00:08:49,610 --> 00:08:51,730 pues venga 212 00:08:51,730 --> 00:08:53,429 la primera de ellas 213 00:08:53,429 --> 00:08:54,909 vamos a 214 00:08:54,909 --> 00:08:58,049 añadir 215 00:08:58,049 --> 00:09:01,039 discos 216 00:09:01,039 --> 00:09:10,340 como se van a pedir por teclado 217 00:09:10,340 --> 00:09:11,919 ahí no se lo pasamos 218 00:09:11,919 --> 00:09:13,779 se lo voy a llamar desde el main 219 00:09:13,779 --> 00:09:15,000 efectivamente 220 00:09:15,000 --> 00:09:17,120 como los vamos a pedir por teclado 221 00:09:17,120 --> 00:09:19,139 han dicho, no los vamos a meter 222 00:09:19,139 --> 00:09:21,039 ahí, pero ahí sí que vamos a meterle 223 00:09:21,039 --> 00:09:23,120 el objeto al que 224 00:09:23,120 --> 00:09:25,159 se lo vamos a añadir, pues entonces eso 225 00:09:25,159 --> 00:09:30,870 vale, es a esta discoteca al que se lo vamos 226 00:09:30,870 --> 00:09:32,789 a añadir, y ahora aquí ya 227 00:09:32,789 --> 00:09:33,710 leemos 228 00:09:33,710 --> 00:09:36,850 pues por ejemplo, lo primero que le 229 00:09:36,850 --> 00:09:38,809 diríamos, en lugar de 230 00:09:38,809 --> 00:09:40,049 hacerlo con un escáner 231 00:09:40,049 --> 00:09:42,690 pues yo lo voy a hacer 232 00:09:42,690 --> 00:09:43,330 con la otra 233 00:09:43,330 --> 00:09:45,789 pues hazlo como 234 00:09:45,789 --> 00:09:54,169 Por si luego importáis estos proyectos 235 00:09:54,169 --> 00:09:55,929 Vosotros, me voy a acostumbrar a 236 00:09:55,929 --> 00:09:58,409 Poner la librería dentro 237 00:09:58,409 --> 00:09:59,789 Y así no tenéis luego que cambiarlo 238 00:09:59,789 --> 00:10:00,509 Y os funciona 239 00:10:00,509 --> 00:10:03,870 Si yo la pongo aquí 240 00:10:03,870 --> 00:10:06,730 En una carpeta 241 00:10:06,730 --> 00:10:07,049 Live 242 00:10:07,049 --> 00:10:12,200 La pongo aquí en una carpeta 243 00:10:12,200 --> 00:10:12,779 Live 244 00:10:12,779 --> 00:10:14,659 La meto aquí 245 00:10:14,659 --> 00:10:16,379 Paste 246 00:10:16,379 --> 00:10:20,159 Y ahora ya 247 00:10:20,159 --> 00:10:21,679 Actuil 248 00:10:21,679 --> 00:10:25,659 Vale, pues entonces ahora ya 249 00:10:25,659 --> 00:10:35,179 ¿Cuántos discos quiere usted? 250 00:10:36,519 --> 00:10:37,259 Pues nada 251 00:10:37,259 --> 00:10:43,460 Estos discos quiere 252 00:10:43,460 --> 00:10:44,600 Y ahora ya 253 00:10:44,600 --> 00:10:46,960 Hacemos un 254 00:10:46,960 --> 00:10:48,539 For 255 00:10:48,539 --> 00:10:50,419 Solamente con N 256 00:10:50,419 --> 00:10:55,049 Y ahora ya le decimos 257 00:10:55,049 --> 00:10:57,429 El disco tiene el título y autor solamente 258 00:10:57,429 --> 00:11:01,279 Título 259 00:11:01,279 --> 00:11:02,779 Y autor 260 00:11:02,779 --> 00:11:06,159 Claro, como lo va a meter seguido 261 00:11:06,159 --> 00:11:08,120 Pues entonces, como ha dicho 262 00:11:08,120 --> 00:11:10,279 Esto simplemente para practicar con ese método 263 00:11:10,279 --> 00:11:12,440 Añadir y eliminar 264 00:11:12,440 --> 00:11:13,879 Vamos a usar el método 265 00:11:13,879 --> 00:11:16,259 AddAll y RemoveAll, que es añadir de golpe 266 00:11:16,259 --> 00:11:18,039 Entonces vamos a crearnos una colección 267 00:11:18,039 --> 00:11:19,200 Primero para meter esos 268 00:11:19,200 --> 00:11:20,980 Y le hacemos un AddAll y ya está 269 00:11:20,980 --> 00:11:21,620 Y así nos vamos 270 00:11:21,620 --> 00:11:23,019 ¿Eh? 271 00:11:24,779 --> 00:11:25,700 Y con lo 272 00:11:25,700 --> 00:11:27,679 Eh 273 00:11:27,679 --> 00:11:27,759 ¿Eh? 274 00:11:29,000 --> 00:11:29,240 ¿Eh? 275 00:11:29,240 --> 00:11:38,259 A ver, espérate 276 00:11:38,259 --> 00:11:40,200 Tú tranquila que forzaremos el error 277 00:11:40,200 --> 00:11:42,580 Vale, por lo pronto estamos añadiendo ahora mismo 278 00:11:42,580 --> 00:11:44,100 Entonces aquí no va a dar error en ningún caso 279 00:11:44,100 --> 00:11:45,659 Vamos a esperar al remove, vale 280 00:11:45,659 --> 00:11:48,820 Entonces vamos a crear aquí una colección 281 00:11:48,820 --> 00:11:52,679 Y de hecho, nos da igual que sea una lista 282 00:11:52,679 --> 00:11:53,740 Que una set, nos da lo mismo 283 00:11:53,740 --> 00:11:55,399 Vamos a crear una colección de discos 284 00:11:55,399 --> 00:12:13,019 Vale, vamos a crear una colección de discos 285 00:12:13,019 --> 00:12:14,620 Y ahora en esta colección de discos 286 00:12:14,620 --> 00:12:15,460 Temporal 287 00:12:15,460 --> 00:12:19,549 pues vamos metiendo 288 00:12:19,549 --> 00:12:21,970 un nuevo disco con los datos que me han dado 289 00:12:21,970 --> 00:12:24,029 no sé en el 290 00:12:24,029 --> 00:12:25,250 constructor en qué orden iban 291 00:12:25,250 --> 00:12:27,929 en el constructor mío al menos 292 00:12:27,929 --> 00:12:29,029 iban autor y título 293 00:12:29,029 --> 00:12:31,009 pues entonces 294 00:12:31,009 --> 00:12:33,870 es que todavía no tengo la colección 295 00:12:33,870 --> 00:12:34,870 que voy a añadir de golpe 296 00:12:34,870 --> 00:12:38,129 claro todavía no 297 00:12:38,129 --> 00:12:44,070 ya sé, desvinculártelos a raíz 298 00:12:44,070 --> 00:12:44,690 te cuesta 299 00:12:44,690 --> 00:12:50,330 que no pasa nada 300 00:12:50,330 --> 00:12:52,409 que si uno 301 00:12:52,409 --> 00:12:53,789 pues al final se encariña 302 00:12:53,789 --> 00:12:56,350 con quien se encariña, tampoco puede elegir 303 00:12:56,350 --> 00:13:01,679 vale, pues ya hemos añadido 304 00:13:01,679 --> 00:13:03,879 ya tenemos este for que está añadiendo 305 00:13:03,879 --> 00:13:05,960 todo el rato a esta lista temporal 306 00:13:05,960 --> 00:13:07,480 que nos hemos hecho, está añadiendo 307 00:13:07,480 --> 00:13:09,419 todo el rato un nuevo disco 308 00:13:09,419 --> 00:13:09,919 un nuevo disco 309 00:13:09,919 --> 00:13:12,100 ahora ya 310 00:13:12,100 --> 00:13:15,860 de mi colección dentro de la discoteca 311 00:13:15,860 --> 00:13:16,700 que es esta 312 00:13:16,700 --> 00:13:18,840 getDiscos de esta 313 00:13:18,840 --> 00:13:21,440 yo ahora ya tengo un método addAll 314 00:13:21,440 --> 00:13:23,240 al cual 315 00:13:23,240 --> 00:13:25,720 le puedo pasar cualquier otra colección 316 00:13:25,720 --> 00:13:27,139 cualquier otra 317 00:13:27,139 --> 00:13:29,639 y se acabó y todos los discos de esta 318 00:13:29,639 --> 00:13:31,580 colección, todos ellos van 319 00:13:31,580 --> 00:13:32,019 al set 320 00:13:32,019 --> 00:13:35,740 entonces es verdad que en esta colección 321 00:13:35,740 --> 00:13:37,559 discos están ordenaditos 322 00:13:37,559 --> 00:13:39,860 pero según se van metiendo al set 323 00:13:39,860 --> 00:13:41,539 pues van cayendo ya en cualquier lado 324 00:13:41,539 --> 00:13:42,279 ¿vale? 325 00:13:43,059 --> 00:13:45,340 el addAll los va sacando de la lista 326 00:13:45,340 --> 00:13:46,960 y los va metiendo al set ahí a mogollón 327 00:13:46,960 --> 00:13:49,120 si alguno 328 00:13:49,120 --> 00:13:50,519 de los de esta lista 329 00:13:50,519 --> 00:13:52,620 si alguno de los de esta lista 330 00:13:52,620 --> 00:13:55,340 estuviera ya en el set, pues no lo metería 331 00:13:55,340 --> 00:13:56,799 pero eso ya sabemos que funciona así 332 00:13:56,799 --> 00:13:59,990 ¿por qué utiliza una lista? 333 00:14:01,850 --> 00:14:03,370 porque me da igual 334 00:14:03,370 --> 00:14:04,590 o sea, he utilizado una lista 335 00:14:04,590 --> 00:14:06,629 me he dicho, bueno, me da igual una lista, un conjunto 336 00:14:06,629 --> 00:14:08,009 me da igual, vamos a ver que 337 00:14:08,009 --> 00:14:09,370 para especificar que 338 00:14:09,370 --> 00:14:11,889 aunque esto sea un set 339 00:14:11,889 --> 00:14:14,750 yo le puedo meter todo lo que hay en una lista 340 00:14:14,750 --> 00:14:16,750 en cualquier cosa 341 00:14:16,750 --> 00:14:19,190 que sea colección, en cualquier cosa que sea colección 342 00:14:19,190 --> 00:14:22,289 vale 343 00:14:22,289 --> 00:14:23,289 entonces 344 00:14:23,289 --> 00:14:26,230 el add all 345 00:14:26,230 --> 00:14:28,730 vale 346 00:14:28,730 --> 00:14:43,379 ya está 347 00:14:43,379 --> 00:14:45,820 vale 348 00:14:45,820 --> 00:14:47,639 entonces pensaba yo 349 00:14:47,639 --> 00:14:49,360 que igual te devolvía el número de discos 350 00:14:49,360 --> 00:14:50,580 que realmente he insertado 351 00:14:50,580 --> 00:14:52,879 pero no, o sea te devuelve un boolean 352 00:14:52,879 --> 00:14:55,679 que es true si se ha insertado 353 00:14:55,679 --> 00:14:57,240 alguno al menos, o sea si ha habido 354 00:14:57,240 --> 00:14:59,480 alguna modificación en el set y falso si no se ha 355 00:14:59,480 --> 00:15:01,600 insertado ninguno. Pero esto ya sabemos 356 00:15:01,600 --> 00:15:03,539 que es un set, con lo cual de esta colección 357 00:15:03,539 --> 00:15:05,460 solo se van a insertar aquellos que 358 00:15:05,460 --> 00:15:07,539 no estén previamente. Pero que 359 00:15:07,539 --> 00:15:09,519 no estén, ¿cómo? Pues 360 00:15:09,519 --> 00:15:11,759 según el criterio de igualdad entre discos. 361 00:15:11,899 --> 00:15:13,019 Como no tenemos ninguno, 362 00:15:13,580 --> 00:15:14,779 no tenemos ninguno, 363 00:15:15,320 --> 00:15:16,899 pues se van a insertar todos. 364 00:15:17,279 --> 00:15:19,500 Que yo, este usuario ha vuelto a 365 00:15:19,500 --> 00:15:21,019 meter el disco 366 00:15:21,019 --> 00:15:23,379 no sé qué 367 00:15:23,379 --> 00:15:25,639 de no sé quién, y ese ya estaba. 368 00:15:26,600 --> 00:15:27,600 Pues lo va a volver 369 00:15:27,600 --> 00:15:29,519 Lo va a volver a añadir 370 00:15:29,519 --> 00:15:30,519 ¿Vale? 371 00:15:31,240 --> 00:15:33,779 Entonces, si no queremos repetidos 372 00:15:33,779 --> 00:15:34,759 Porque lo 373 00:15:34,759 --> 00:15:37,639 Oye usuario, que el que me estás dando ya lo tengo 374 00:15:37,639 --> 00:15:39,580 Pues si no queremos repetidos 375 00:15:39,580 --> 00:15:41,440 Tendremos que ponerle en disco 376 00:15:41,440 --> 00:15:42,799 Un jasco de equals 377 00:15:42,799 --> 00:15:43,720 ¿Vale? 378 00:15:45,159 --> 00:15:47,320 Entonces, ¿por qué 379 00:15:47,320 --> 00:15:49,379 Esta colección 380 00:15:49,379 --> 00:15:50,299 Es un set? 381 00:15:51,139 --> 00:15:53,200 Vale, pues ¿qué jasco de equals 382 00:15:53,200 --> 00:15:54,080 Podríamos poner aquí? 383 00:15:57,600 --> 00:16:13,080 A ver, aquí el jasco de equals en realidad deberían ser los dos porque un autor puede tener varios discos y un disco que se titula Hermoso Día puede tener varios autores. 384 00:16:13,080 --> 00:16:26,059 ¿No? Entonces, aquí es un ejemplo en el cual las claves primarias no tienen que ser siempre un único valor. La clave primaria puede ser múltiple, ¿verdad? 385 00:16:27,600 --> 00:16:33,600 Es decir, el autor no identifica de forma única el disco, porque puede haber varios discos con el mismo autor. 386 00:16:34,039 --> 00:16:40,019 Y el título tampoco lo identifica de forma única, porque puede haber varios autores que hayan coincidido en el título del disco. 387 00:16:40,799 --> 00:16:41,240 ¿Vale? 388 00:16:41,620 --> 00:16:44,159 ¿Qué podría ocurrir si no tienen mucha imaginación? 389 00:16:45,639 --> 00:16:46,360 Y pasa. 390 00:16:46,659 --> 00:16:54,080 Pues entonces no pasa nada, hacemos un jasco de equals con las dos propiedades. 391 00:16:55,919 --> 00:16:56,759 Y ya está. 392 00:16:56,759 --> 00:17:06,460 Entonces, solamente los objetos que coincidan en título y autor son considerados iguales, ¿vale? 393 00:17:06,500 --> 00:17:16,559 Este jasco de equals que me ha generado considera tanto autor como título. 394 00:17:30,660 --> 00:17:34,279 Vale 395 00:17:34,279 --> 00:17:42,470 Bueno, pues entonces 396 00:17:42,470 --> 00:17:45,150 Nos vamos al main 397 00:17:45,150 --> 00:17:46,690 Pues ya está, añadir discos 398 00:17:46,690 --> 00:17:47,950 Ahora, eliminar 399 00:17:47,950 --> 00:18:06,700 Vale, pues lo mismo, vamos a decirle 400 00:18:06,700 --> 00:18:08,400 Oye, ¿cuántos discos quieres eliminar? 401 00:18:09,400 --> 00:18:10,940 Los vamos a meter en una colección 402 00:18:10,940 --> 00:18:11,720 Aparte 403 00:18:11,720 --> 00:18:14,420 Y luego le mandamos borrar 404 00:18:14,420 --> 00:18:18,220 Las cuatro primeras líneas de arriba 405 00:18:18,220 --> 00:18:22,180 Bueno, todas son idénticas 406 00:18:22,180 --> 00:18:30,450 ¿Cuántos discos quieres eliminar? 407 00:18:30,589 --> 00:18:31,529 Todos estos discos 408 00:18:31,529 --> 00:18:33,329 Guárdamelos a una colección aparte 409 00:18:33,329 --> 00:18:34,710 Título autor, título autor 410 00:18:34,710 --> 00:18:36,730 Y ahora a esta de aquí 411 00:18:36,730 --> 00:18:41,759 De .get 412 00:18:41,759 --> 00:18:46,079 Ah, que no le he pasado 413 00:18:46,079 --> 00:18:46,880 Perdón 414 00:18:46,880 --> 00:18:52,880 Este no se lo he pasado 415 00:18:52,880 --> 00:18:56,000 Pues ahora ya a este punto 416 00:18:56,000 --> 00:18:58,019 A esta colección 417 00:18:58,019 --> 00:19:02,220 Bórrame todos aquellos 418 00:19:02,220 --> 00:19:04,019 Que sean iguales 419 00:19:04,019 --> 00:19:07,400 A alguno de estos de aquí 420 00:19:07,400 --> 00:19:09,880 Y esto no da ningún tipo de error 421 00:19:09,880 --> 00:19:12,460 Porque el error que os da a vosotros 422 00:19:12,460 --> 00:19:14,660 Es un error que se genera 423 00:19:14,660 --> 00:19:16,339 Cuando dentro de un for 424 00:19:16,339 --> 00:19:18,180 Hay un remove 425 00:19:18,180 --> 00:19:20,019 Porque anidas dos bucles 426 00:19:20,019 --> 00:19:22,200 Y los dos bucles colisionan 427 00:19:22,200 --> 00:19:23,079 En la colección 428 00:19:23,079 --> 00:19:24,099 ¿Vale? 429 00:19:25,140 --> 00:19:27,900 Entonces, ¿cómo podríamos provocar el error? 430 00:19:28,140 --> 00:19:29,259 Aquí lo que pasa es que vosotros igual 431 00:19:29,259 --> 00:19:32,019 Habéis recorrido la colección, los habéis ido eliminando uno por uno 432 00:19:32,019 --> 00:19:32,920 ¿O cómo habéis hecho? 433 00:19:33,240 --> 00:19:34,160 Para que os salga el error 434 00:19:34,160 --> 00:19:50,059 Vale, vamos a hacer una cosa 435 00:19:50,059 --> 00:19:51,099 Vamos a hacer un método 436 00:19:51,099 --> 00:19:53,380 Que borra todos los discos 437 00:19:53,380 --> 00:19:54,420 Del autor patatín 438 00:19:54,420 --> 00:19:56,640 Que es un ejemplo 439 00:19:56,640 --> 00:19:58,500 Que vamos a tener que hacer 440 00:19:58,500 --> 00:20:00,279 Lo que vosotros habéis hecho 441 00:20:00,279 --> 00:20:03,240 Forzar, eso, que es la misma idea 442 00:20:03,240 --> 00:20:07,579 Ah, en la siguiente funcionalidad 443 00:20:07,579 --> 00:20:08,720 En la última, vale 444 00:20:08,720 --> 00:20:10,359 Por ahora vamos a añadir 445 00:20:10,359 --> 00:20:13,180 Por ahora vamos a añadir 446 00:20:13,180 --> 00:20:14,900 Un método extra para ver ese error 447 00:20:14,900 --> 00:20:16,460 Por qué sale y cómo arreglarlo 448 00:20:16,460 --> 00:20:18,180 Vamos a añadir un método extra 449 00:20:18,180 --> 00:20:20,220 que es, vamos a borrar 450 00:20:20,220 --> 00:20:22,019 todos los discos de un autor 451 00:20:22,019 --> 00:20:23,240 porque ese autor 452 00:20:23,240 --> 00:20:26,220 se ha condenado 453 00:20:26,220 --> 00:20:31,960 la han cancelado, ha escrito un tweet 454 00:20:31,960 --> 00:20:33,960 muy incorrecto 455 00:20:33,960 --> 00:20:35,119 y han dicho, tú fuera 456 00:20:35,119 --> 00:20:38,000 vamos a eliminar 457 00:20:38,000 --> 00:20:40,059 todos los títulos que se llamen 458 00:20:40,059 --> 00:20:45,640 de este 459 00:20:45,640 --> 00:20:48,119 ala 460 00:20:48,119 --> 00:20:49,980 todos los de este, entonces 461 00:20:49,980 --> 00:20:52,400 aquí 462 00:20:52,400 --> 00:20:53,299 vale 463 00:20:53,299 --> 00:20:55,359 no tiene sentido 464 00:20:55,359 --> 00:20:57,980 que nosotros 465 00:20:57,980 --> 00:20:59,160 hiciéramos esto 466 00:20:59,160 --> 00:21:01,920 de esto de aquí 467 00:21:01,920 --> 00:21:04,039 vamos a ver, vamos a crearnos 468 00:21:04,039 --> 00:21:04,980 un disco 469 00:21:04,980 --> 00:21:06,799 de 470 00:21:06,799 --> 00:21:11,809 igual a new disco 471 00:21:11,809 --> 00:21:14,410 vamos a ponerle 472 00:21:14,410 --> 00:21:15,549 a este disco 473 00:21:15,549 --> 00:21:17,750 como propiedad autor 474 00:21:17,750 --> 00:21:18,829 este autor de aquí 475 00:21:18,829 --> 00:21:20,529 vale 476 00:21:20,529 --> 00:21:22,069 y ahora 477 00:21:22,069 --> 00:21:23,910 imaginaos que hacemos 478 00:21:23,910 --> 00:21:26,069 de punto getDiscos y ahora 479 00:21:26,069 --> 00:21:28,390 borrame uno igual a este 480 00:21:28,390 --> 00:21:32,079 vale 481 00:21:32,079 --> 00:21:34,039 esto no nos va a eliminar nada 482 00:21:34,039 --> 00:21:35,180 está claro, ¿por qué? 483 00:21:35,640 --> 00:21:37,140 porque ¿qué hace el método remove? 484 00:21:37,660 --> 00:21:39,079 el método remove 485 00:21:39,079 --> 00:21:42,160 te borra el disco que encuentre 486 00:21:42,160 --> 00:21:43,619 en esta colección 487 00:21:43,619 --> 00:21:44,940 igual a este 488 00:21:44,940 --> 00:21:48,220 vale, pero para que sea igual 489 00:21:48,220 --> 00:21:50,519 tiene que ser igual el autor y el título 490 00:21:50,519 --> 00:21:52,579 y este disco, su autor es este 491 00:21:52,579 --> 00:21:54,099 pero su título es null 492 00:21:54,099 --> 00:21:55,319 yo no se lo he fijado, es null 493 00:21:55,319 --> 00:21:58,460 entonces no te va a encontrar ninguno igual a ese 494 00:21:58,460 --> 00:21:59,559 ¿vale? 495 00:22:00,539 --> 00:22:02,779 claro, porque es que el problema es que yo quiero borrar 496 00:22:02,779 --> 00:22:04,779 no solo uno, uno igual a ese 497 00:22:04,779 --> 00:22:06,660 sino quiero borrar todos 498 00:22:06,660 --> 00:22:08,799 los cuyo autor sea este 499 00:22:08,799 --> 00:22:10,960 por eso aquí no fijo el título 500 00:22:10,960 --> 00:22:14,180 claro, yo aquí no fijo el título 501 00:22:14,180 --> 00:22:16,279 no lo fijo, porque 502 00:22:16,279 --> 00:22:18,220 yo quiero borrar todos 503 00:22:18,220 --> 00:22:20,559 los que tienen como autor este 504 00:22:20,559 --> 00:22:21,900 y título cualquiera 505 00:22:21,900 --> 00:22:24,559 entonces no puedo hacerlo con un remove sin más 506 00:22:24,559 --> 00:22:25,680 así no puedo 507 00:22:25,680 --> 00:22:28,359 lo puedo hacer con un remove sin más 508 00:22:28,359 --> 00:22:29,180 si me dijeran 509 00:22:29,180 --> 00:22:31,259 borra el 510 00:22:31,259 --> 00:22:33,859 claro, borra 511 00:22:33,859 --> 00:22:35,400 este autor 512 00:22:35,400 --> 00:22:37,980 y de este autor borra 513 00:22:37,980 --> 00:22:40,299 su disco que se llama así 514 00:22:40,299 --> 00:22:42,200 este en concreto 515 00:22:42,200 --> 00:22:44,000 entonces sí, porque el método equals 516 00:22:44,000 --> 00:22:45,160 utiliza los dos 517 00:22:45,160 --> 00:22:46,799 entonces, ahora ya 518 00:22:46,799 --> 00:22:49,140 lo tendría resuelto, le digo, oye tú 519 00:22:49,140 --> 00:22:51,279 borra ese disco 520 00:22:51,279 --> 00:22:53,319 que encuentres igualito a este 521 00:22:53,319 --> 00:22:55,539 entonces, él coge el autor de ese 522 00:22:55,539 --> 00:22:57,299 el título de ese 523 00:22:57,299 --> 00:22:59,240 que ya se lo he fijado los dos, busca 524 00:22:59,240 --> 00:23:01,200 uno igualito a ese y te lo elimina 525 00:23:01,200 --> 00:23:03,359 pero ese no es el problema 526 00:23:03,359 --> 00:23:05,380 que nos han dado, el problema que nos han dado es 527 00:23:05,380 --> 00:23:07,200 no, no, no, bórrame todos 528 00:23:07,200 --> 00:23:09,440 los del autor, luego un único remove no nos vale 529 00:23:09,440 --> 00:23:10,920 porque el remove es para borrar 530 00:23:10,920 --> 00:23:12,480 uno igual a ese 531 00:23:12,480 --> 00:23:14,720 luego un único remove no nos vale 532 00:23:14,720 --> 00:23:17,039 vale, vale, entonces 533 00:23:17,039 --> 00:23:19,339 ¿qué es la siguiente cosa que nos plantearíamos hacer? 534 00:23:19,900 --> 00:23:21,660 bueno, pues voy a recorrer la colección 535 00:23:21,660 --> 00:23:23,980 voy a recorrer la colección 536 00:23:23,980 --> 00:23:26,500 que como es un set 537 00:23:26,500 --> 00:23:28,900 la tengo que recorrer con un for each 538 00:23:28,900 --> 00:23:30,880 no sabemos, hasta ahora no sabemos de otra manera 539 00:23:30,880 --> 00:23:33,279 si fuera una lista 540 00:23:33,279 --> 00:23:35,279 podríamos recorrerla con un for de índice 541 00:23:35,279 --> 00:23:37,480 desde igual a cero, mientras sea menor que el tamaño 542 00:23:37,480 --> 00:23:39,480 de la lista, pero como es un set 543 00:23:39,480 --> 00:23:41,640 un for each, no tenemos otra historia 544 00:23:41,640 --> 00:23:45,279 vale, pues para cada disco 545 00:23:45,279 --> 00:23:48,680 en 546 00:23:48,680 --> 00:23:50,640 de 547 00:23:50,640 --> 00:23:53,039 que es la discoteca que me han dado como parámetro 548 00:23:53,039 --> 00:23:54,299 punto get discos 549 00:23:54,299 --> 00:23:57,140 vale, para cada disco 550 00:23:57,140 --> 00:23:59,380 dis 551 00:23:59,380 --> 00:23:59,960 en esta 552 00:23:59,960 --> 00:24:02,480 pues ahora, podríamos preguntarnos 553 00:24:02,480 --> 00:24:04,259 a ver, este es uno de los que yo quiero borrar 554 00:24:04,259 --> 00:24:05,720 o lo que es lo mismo 555 00:24:05,720 --> 00:24:07,740 dis.get autor 556 00:24:07,740 --> 00:24:10,660 resulta que es igual 557 00:24:10,660 --> 00:24:12,079 al autor que me han dado 558 00:24:12,079 --> 00:24:14,940 ¿vale? que esta no es 559 00:24:14,940 --> 00:24:17,200 la igualdad total del objeto 560 00:24:17,200 --> 00:24:19,039 no es la igualdad, esta es solo la igualdad 561 00:24:19,039 --> 00:24:19,539 en autor 562 00:24:19,539 --> 00:24:22,619 claro, la igualdad en el string autor 563 00:24:22,619 --> 00:24:25,079 ¿vale? este disco 564 00:24:25,079 --> 00:24:27,240 dis resulta que su autor 565 00:24:27,240 --> 00:24:28,920 es igual que este 566 00:24:28,920 --> 00:24:31,099 autor, es igual que este autor 567 00:24:31,099 --> 00:24:32,980 pues sí 568 00:24:32,980 --> 00:24:34,559 es igual 569 00:24:34,559 --> 00:24:36,900 ¿vale? entonces 570 00:24:36,900 --> 00:24:39,019 tendríamos que borrar este disco 571 00:24:39,019 --> 00:24:40,779 ¿y qué haríamos? pues yo cojo 572 00:24:40,779 --> 00:24:42,539 mi discoteca esta de aquí 573 00:24:42,539 --> 00:24:45,279 que la saco con dis.getDiscos 574 00:24:45,279 --> 00:24:46,460 y le digo 575 00:24:46,460 --> 00:24:47,559 oye, bórrame 576 00:24:47,559 --> 00:24:50,660 este disco dis, que es el que quiero borrar 577 00:24:50,660 --> 00:24:53,279 este dis, que es el que he comprobado 578 00:24:53,279 --> 00:24:54,559 que el autor es igual a este 579 00:24:54,559 --> 00:24:56,359 este dis, que es el que tú quieres borrar 580 00:24:56,359 --> 00:24:57,160 este, bórramelo 581 00:24:57,160 --> 00:24:59,759 y así con el for todo el rato 582 00:24:59,759 --> 00:25:01,720 pasamos al siguiente dis 583 00:25:01,720 --> 00:25:04,299 su autor es igual al autor que me han dado 584 00:25:04,299 --> 00:25:06,180 también lo es, pues ala 585 00:25:06,180 --> 00:25:08,019 de esa colección 586 00:25:08,019 --> 00:25:09,619 borra el igual a ese 587 00:25:09,619 --> 00:25:12,160 vale, y así creeríamos 588 00:25:12,160 --> 00:25:13,460 que estamos borrando las cosas 589 00:25:13,460 --> 00:25:15,880 y esto a nivel de código 590 00:25:15,880 --> 00:25:17,779 está bien, tiene sentido 591 00:25:17,779 --> 00:25:19,579 está bien hecho, vale 592 00:25:19,579 --> 00:25:22,220 vamos a 593 00:25:22,220 --> 00:25:23,720 public static, me falta el void 594 00:25:23,720 --> 00:25:25,720 vale 595 00:25:25,720 --> 00:25:28,099 vamos a hacer una pequeña 596 00:25:28,099 --> 00:25:30,039 prueba, primero en 597 00:25:30,039 --> 00:25:32,180 mi main, añadiendo 598 00:25:32,180 --> 00:25:33,099 unos discos 599 00:25:33,099 --> 00:25:36,339 vale, vamos a llamar 600 00:25:36,339 --> 00:25:38,460 primero vamos a crear la discoteca 601 00:25:38,460 --> 00:25:40,359 Claro, discoteca 602 00:25:40,359 --> 00:25:42,700 De una nueva 603 00:25:42,700 --> 00:25:44,500 Discoteca, aquí veis que bien 604 00:25:44,500 --> 00:25:46,200 Me viene el constructor solo con la temática 605 00:25:46,200 --> 00:25:49,079 Me viene genial el constructor solo con la temática 606 00:25:49,079 --> 00:25:50,839 Porque, joel, nunca he visto tantos bostezos 607 00:25:50,839 --> 00:25:51,539 Simultáneamente 608 00:25:51,539 --> 00:25:53,920 Bueno, me viene muy bien una 609 00:25:53,920 --> 00:25:57,319 Un constructor solo con la temática 610 00:25:57,319 --> 00:25:58,500 Porque 611 00:25:58,500 --> 00:26:00,880 Le digo, ¿de qué va a ser tu discoteca? 612 00:26:00,960 --> 00:26:02,480 Pues va a ser de jazz 613 00:26:02,480 --> 00:26:04,059 Muy bien 614 00:26:04,059 --> 00:26:06,559 Toma ya, y la colección no la 615 00:26:06,559 --> 00:26:08,859 Ahí está. No la inicializo porque ya se inicializa 616 00:26:08,859 --> 00:26:10,000 aquí. 617 00:26:10,579 --> 00:26:11,759 Ya se inicializa aquí. 618 00:26:15,259 --> 00:26:16,400 Es maravilloso. 619 00:26:16,599 --> 00:26:17,660 Lo que pasa es que es unos osos. 620 00:26:20,720 --> 00:26:22,099 Claro, es que es tan amplio. 621 00:26:23,380 --> 00:26:24,299 Vale, pues entonces, 622 00:26:24,460 --> 00:26:26,880 ahora vamos a añadir unos cuantos discos. 623 00:26:39,880 --> 00:26:40,359 Vale. 624 00:26:40,359 --> 00:26:42,039 Y ahora 625 00:26:42,039 --> 00:26:44,299 vamos a borrar unos cuantos 626 00:26:44,299 --> 00:26:44,880 discos. 627 00:26:44,880 --> 00:26:52,359 entonces vamos a poner aquí 628 00:26:52,359 --> 00:26:54,259 un este 629 00:26:54,259 --> 00:26:54,680 para 630 00:26:54,680 --> 00:26:57,180 que sepamos donde 631 00:26:57,180 --> 00:27:01,380 empieza este método 632 00:27:01,380 --> 00:27:04,569 venga 633 00:27:04,569 --> 00:27:05,670 vamos a ejecutar esto 634 00:27:05,670 --> 00:27:08,109 a ver si nos añade y nos borra 635 00:27:08,109 --> 00:27:11,150 porque aquí podemos haber hecho cualquier tontería 636 00:27:11,150 --> 00:27:14,430 depende de si el que borra 637 00:27:14,430 --> 00:27:15,509 es justo el último 638 00:27:15,509 --> 00:27:17,789 si coincide que el que tiene que borrar es justo el último 639 00:27:17,789 --> 00:27:19,230 pero bueno 640 00:27:19,230 --> 00:27:21,329 vale, ¿cuántos vamos a meter? 641 00:27:21,329 --> 00:27:35,970 Venga, vamos a meter tres. Autor, pues el autor va a ser A1 y su título va a ser título 1. El segundo autor, el A1, también va a tener otro disquito, que es el título 2. 642 00:27:35,970 --> 00:27:43,150 Y luego vamos a tener un autor 2, cuyo título es el título 3. 643 00:27:44,190 --> 00:27:48,269 Entonces, tenemos tres autores. 644 00:27:48,529 --> 00:27:52,490 El A1, que ha hecho dos discos, y el A2, que ha hecho un disco solo. 645 00:27:53,809 --> 00:27:54,970 ¿Cuántos discos...? 646 00:27:57,009 --> 00:27:59,910 ¿Por qué me pregunta esto? Un momentito. 647 00:28:00,710 --> 00:28:02,789 Me tendría que preguntar el autor, ¿no? 648 00:28:03,609 --> 00:28:04,269 Un momentín. 649 00:28:05,970 --> 00:28:08,829 a ver 650 00:28:08,829 --> 00:28:17,339 ah, es que he llamado 651 00:28:17,339 --> 00:28:19,259 elimina discos, no, yo quiero 652 00:28:19,259 --> 00:28:21,019 probar elimina autor, para probar he llamado 653 00:28:21,019 --> 00:28:23,380 he probado elimina discos, bueno ya que lo he lanzado 654 00:28:23,380 --> 00:28:25,099 vamos a probar a ver si nos elimina los discos 655 00:28:25,099 --> 00:28:27,599 y nos da error, ¿cuántos discos? 656 00:28:27,720 --> 00:28:28,880 pues venga, vamos a borrar 657 00:28:28,880 --> 00:28:31,380 el autor 2 658 00:28:31,380 --> 00:28:32,920 con el título 3 y ya está 659 00:28:32,920 --> 00:28:34,720 a ver si nos da algún error o no 660 00:28:34,720 --> 00:28:37,400 ¿cuántos discos 661 00:28:37,400 --> 00:28:39,319 quiero borrar? pues quiero borrar un disco 662 00:28:39,319 --> 00:28:41,400 Autor 663 00:28:41,400 --> 00:28:44,720 A2 y título 3 664 00:28:44,720 --> 00:28:46,900 No ha dado error 665 00:28:46,900 --> 00:28:48,400 Seguramente sé de eliminar discos 666 00:28:48,400 --> 00:28:49,140 Este bien hecho 667 00:28:49,140 --> 00:28:52,119 Vale, y ahora ya yo quería probar 668 00:28:52,119 --> 00:28:53,700 El elimina autor 669 00:28:53,700 --> 00:28:55,700 No elimina discos 670 00:28:55,700 --> 00:28:57,319 Voy a probar este 671 00:28:57,319 --> 00:29:01,910 Elimina autor 672 00:29:01,910 --> 00:29:05,859 Vamos a borrar 673 00:29:05,859 --> 00:29:06,880 Entonces le vamos a decir 674 00:29:06,880 --> 00:29:09,220 Autor a borrar 675 00:29:09,220 --> 00:29:13,599 Autor a borrar 676 00:29:13,599 --> 00:29:16,759 leemos el autor a borrar 677 00:29:16,759 --> 00:29:23,710 y ahora ya 678 00:29:23,710 --> 00:29:25,470 a elimina autor le decimos 679 00:29:25,470 --> 00:29:27,349 bórrame todos los de este autor 680 00:29:27,349 --> 00:29:29,789 en esta discoteca que acabas de hacer 681 00:29:29,789 --> 00:29:31,450 y en la que acabas de agregar discos 682 00:29:31,450 --> 00:29:33,549 vale 683 00:29:33,549 --> 00:29:35,730 otra vez 684 00:29:35,730 --> 00:29:36,529 ejecutamos 685 00:29:36,529 --> 00:29:39,049 vamos a meter 3 686 00:29:39,049 --> 00:29:41,329 el autor 1 687 00:29:41,329 --> 00:29:44,009 te ha hecho un disco 688 00:29:44,009 --> 00:29:44,549 t1 689 00:29:44,549 --> 00:29:47,509 el autor 1 te ha hecho un disco 690 00:29:47,509 --> 00:29:48,190 t2 691 00:29:48,190 --> 00:29:50,630 y el autor 2 692 00:29:50,630 --> 00:29:52,869 te ha hecho un disco T3 693 00:29:52,869 --> 00:29:55,109 vale, vamos a borrar 694 00:29:55,109 --> 00:29:56,869 ¿a quién quieres borrar? al autor 1 695 00:29:56,869 --> 00:29:58,490 pam, ¿vale? 696 00:29:59,450 --> 00:30:00,950 era de esperar porque estamos 697 00:30:00,950 --> 00:30:03,029 borrando autores que están ahí metidos 698 00:30:03,029 --> 00:30:05,009 en la colección, es este concurrent 699 00:30:05,009 --> 00:30:05,990 este de aquí 700 00:30:05,990 --> 00:30:10,069 entonces, este error ha salido 701 00:30:10,069 --> 00:30:12,269 de esto, vale 702 00:30:12,269 --> 00:30:16,450 ha salido de esta situación 703 00:30:16,450 --> 00:30:18,049 que 704 00:30:18,049 --> 00:30:20,430 dentro de un for en el que yo estoy recorriendo 705 00:30:20,430 --> 00:30:22,069 estoy borrando 706 00:30:22,069 --> 00:30:24,210 también, entonces esta colección 707 00:30:24,210 --> 00:30:25,410 getDiscos 708 00:30:25,410 --> 00:30:27,789 ya se ha apropiado de ella el forEach 709 00:30:27,789 --> 00:30:29,009 porque ya la está recorriendo 710 00:30:29,009 --> 00:30:31,869 y el remove se quiere meter también en ella 711 00:30:31,869 --> 00:30:34,009 a recorrerla, porque tiene que recorrerla 712 00:30:34,009 --> 00:30:35,569 también hasta que encuentre el disco 713 00:30:35,569 --> 00:30:36,670 igual a dis y borrarlo 714 00:30:36,670 --> 00:30:39,750 pues no, no, con dos no 715 00:30:39,750 --> 00:30:43,579 aquí estos tríos 716 00:30:43,579 --> 00:30:45,759 no le van, tiene que ser o uno o el otro 717 00:30:45,759 --> 00:30:47,980 con lo cual, ¿cómo arreglamos esto? 718 00:30:48,059 --> 00:30:48,920 pues esto no nos gusta 719 00:30:48,920 --> 00:30:50,980 vale 720 00:30:50,980 --> 00:30:53,380 pues en esta situación en concreto 721 00:30:53,380 --> 00:30:58,559 cuando queremos 722 00:30:58,559 --> 00:31:03,000 borrar por otros 723 00:31:03,000 --> 00:31:04,839 datos que no son la clave 724 00:31:04,839 --> 00:31:09,500 primaria, es decir 725 00:31:09,500 --> 00:31:10,420 lo que está en el equals 726 00:31:10,420 --> 00:31:13,480 o hashcode 727 00:31:13,480 --> 00:31:15,420 si es que es un set, porque esto es igual para 728 00:31:15,420 --> 00:31:16,980 lista que para set, me da lo mismo 729 00:31:16,980 --> 00:31:23,910 no podemos 730 00:31:23,910 --> 00:31:24,769 anidar 731 00:31:24,769 --> 00:31:29,519 remove en el 732 00:31:29,519 --> 00:31:30,140 for each 733 00:31:30,140 --> 00:31:34,519 es porque 734 00:31:34,519 --> 00:31:36,500 da una excepción 735 00:31:36,500 --> 00:31:37,440 de 736 00:31:37,440 --> 00:31:40,299 concurrencia. 737 00:31:41,200 --> 00:31:41,259 Vale. 738 00:31:42,599 --> 00:31:43,880 Eso, esa situación, 739 00:31:44,579 --> 00:31:45,619 la hacemos con un iterador. 740 00:31:52,589 --> 00:31:54,269 Vale, que el iterador además te ofrece 741 00:31:54,269 --> 00:31:56,190 otras funcionalidades y todo eso. 742 00:31:56,490 --> 00:31:58,170 Pues venga, ¿cómo hacemos esto mismo? 743 00:31:58,250 --> 00:31:59,450 Esto ya lo hemos comentado. Vale. 744 00:32:00,089 --> 00:32:02,390 Pues el iterador es un objeto que es capaz de iterar 745 00:32:02,390 --> 00:32:04,089 por una colección, como su nombre indica. 746 00:32:04,089 --> 00:32:06,809 y el iterador pertenece a la clase iterator 747 00:32:06,809 --> 00:32:10,910 vale, pues el iterador hay que decirle 748 00:32:10,910 --> 00:32:13,990 es una clase genérica, hay que decirle tú sobre qué vas a iterar 749 00:32:13,990 --> 00:32:16,490 sobre qué tipo de objetos, en este caso 750 00:32:16,490 --> 00:32:19,630 como nuestra colección es de discos, pues le decimos 751 00:32:19,630 --> 00:32:22,730 oye iterador, tú vas a iterar sobre una colección 752 00:32:22,730 --> 00:32:25,509 que tiene discos, si quisiéramos iterar 753 00:32:25,509 --> 00:32:28,509 sobre una colección que no está parametrizada, que puede tener cualquier cosa 754 00:32:28,509 --> 00:32:30,950 pues podríamos crear el iterador así 755 00:32:30,950 --> 00:32:34,730 pero como en nuestro caso es una colección de discos 756 00:32:34,730 --> 00:32:36,990 parametrizada a discos, pues iteramos así 757 00:32:36,990 --> 00:32:38,890 vale, pues este iterator 758 00:32:38,890 --> 00:32:41,450 ¿cómo se instancia? ¿cómo se crea? 759 00:32:41,869 --> 00:32:43,829 pues tendremos que coger la colección 760 00:32:43,829 --> 00:32:45,769 en la cual queramos iterar 761 00:32:45,769 --> 00:32:48,589 que en nuestro caso es de .getDiscos 762 00:32:48,589 --> 00:32:50,789 y esa colección tiene un método 763 00:32:50,789 --> 00:32:52,650 que es el método iterator 764 00:32:52,650 --> 00:32:55,549 que te genera un iterador y te lo devuelve 765 00:32:55,549 --> 00:32:58,309 uno pone la colección que sea 766 00:32:58,309 --> 00:33:00,390 de la que quiere sacar el iterador 767 00:33:00,390 --> 00:33:02,630 y con este método 768 00:33:02,630 --> 00:33:04,690 saca ese objeto iterador 769 00:33:04,690 --> 00:33:05,509 y te lo devuelve 770 00:33:05,509 --> 00:33:08,390 vale, pues ya está, ya tenemos el iterador 771 00:33:08,390 --> 00:33:10,869 que está en java útil 772 00:33:10,869 --> 00:33:12,069 lo importamos y ya está 773 00:33:12,069 --> 00:33:14,230 y ahora este objeto iterador 774 00:33:14,230 --> 00:33:16,549 tiene métodos 775 00:33:16,549 --> 00:33:19,109 para avanzar por mi colección 776 00:33:19,109 --> 00:33:21,130 y devolverme los objetos 777 00:33:21,130 --> 00:33:22,769 en los que está posicionado 778 00:33:22,769 --> 00:33:24,849 según avanza y hacer cosas con ellos 779 00:33:24,849 --> 00:33:26,930 ¿cuál es el método 780 00:33:26,930 --> 00:33:29,250 más importante de el iterador? 781 00:33:29,250 --> 00:33:34,440 pues deliterador si vemos lo que tiene 782 00:33:34,440 --> 00:33:38,099 tiene muchas cosas 783 00:33:38,099 --> 00:33:42,319 pero tiene un método 784 00:33:42,319 --> 00:33:43,339 next 785 00:33:43,339 --> 00:33:45,819 que es el que sirve para 786 00:33:45,819 --> 00:33:47,980 avanzar, el literador 787 00:33:47,980 --> 00:33:49,500 inicialmente está colocado 788 00:33:49,500 --> 00:33:51,980 antes del primero, el literador está 789 00:33:51,980 --> 00:33:53,900 colocado antes del primero y cada 790 00:33:53,900 --> 00:33:55,759 next que hacemos le avanza una posición 791 00:33:55,759 --> 00:33:58,019 con lo cual para empezar por 792 00:33:58,019 --> 00:33:59,619 el primero ya hay que hacer un primer next 793 00:33:59,619 --> 00:34:02,119 para luego pasar al segundo hay que hacer un segundo 794 00:34:02,119 --> 00:34:04,299 next, para luego pasar al tercero 795 00:34:04,299 --> 00:34:05,319 hay que hacer un tercer next. 796 00:34:05,720 --> 00:34:07,039 Ese es el método más importante. 797 00:34:08,099 --> 00:34:09,940 Y luego tiene hashNext que te dice 798 00:34:09,940 --> 00:34:11,980 ¿hay un siguiente? O sea, ¿tiene sentido 799 00:34:11,980 --> 00:34:13,860 que hagas un next porque hay un siguiente? 800 00:34:14,559 --> 00:34:16,099 True si hay un siguiente, 801 00:34:16,280 --> 00:34:17,960 con lo cual tú avanzas, y false si no. 802 00:34:18,860 --> 00:34:20,099 Entonces, la combinación de estos 803 00:34:20,099 --> 00:34:21,420 dos métodos en un bucle 804 00:34:21,420 --> 00:34:24,199 es la que te permite ir avanzando con el iterador. 805 00:34:24,739 --> 00:34:26,300 Y luego, aparte, pues iterator 806 00:34:26,300 --> 00:34:26,960 pues tiene 807 00:34:26,960 --> 00:34:30,320 métodos para hacer cositas, pero como veis 808 00:34:30,320 --> 00:34:30,699 muy poco. 809 00:34:32,659 --> 00:34:34,239 Justo. Claro, entonces, ¿cómo 810 00:34:34,239 --> 00:34:36,300 usamos un iterador para recorrer 811 00:34:36,300 --> 00:34:37,000 una colección. 812 00:34:38,360 --> 00:34:40,480 Pues hacemos. Mientras. ¿Mientras qué? 813 00:34:40,980 --> 00:34:42,260 Pues mientras tenga siguiente. 814 00:34:43,380 --> 00:34:44,400 Mientras tenga 815 00:34:44,400 --> 00:34:44,960 siguiente. 816 00:34:45,860 --> 00:34:47,920 Mientras tenga siguiente. Vale. 817 00:34:48,059 --> 00:34:49,420 Pues mientras tenga siguiente. 818 00:34:50,079 --> 00:34:52,300 Hacemos un next. ¿Vale? 819 00:34:52,780 --> 00:34:54,460 Para colocarnos en ese siguiente. 820 00:34:55,619 --> 00:34:56,579 Ese next 821 00:34:56,579 --> 00:34:58,139 coloca el iterador en el siguiente. 822 00:34:58,519 --> 00:35:00,360 Y te lo devuelve como parámetro. 823 00:35:00,360 --> 00:35:01,880 Entonces si tú quieres hacer algo con él 824 00:35:01,880 --> 00:35:04,219 porque quieres pues 825 00:35:04,219 --> 00:35:06,980 como es un disco, pues lo podemos guardar aquí 826 00:35:06,980 --> 00:35:11,260 por ejemplo, y yo aquí 827 00:35:11,260 --> 00:35:13,059 con este disco, pues podría 828 00:35:13,059 --> 00:35:15,280 cambiarle una propiedad, cambiarle 829 00:35:15,280 --> 00:35:15,760 el autor 830 00:35:15,760 --> 00:35:18,900 mostrarlo, lo que quisiera 831 00:35:18,900 --> 00:35:21,699 pero en particular, el iterador 832 00:35:21,699 --> 00:35:23,219 te permite borrar 833 00:35:23,219 --> 00:35:24,619 el elemento en el que estés 834 00:35:24,619 --> 00:35:26,300 te permite borrarlo 835 00:35:26,300 --> 00:35:29,219 claro, con el 836 00:35:29,219 --> 00:35:30,179 método remove 837 00:35:30,179 --> 00:35:33,199 que está sincronizado con el while 838 00:35:33,199 --> 00:35:35,119 y al estar sincronizado no te da 839 00:35:35,119 --> 00:35:37,219 concurrencia, entonces este bucle 840 00:35:37,219 --> 00:35:39,400 en particular que he hecho te los estaría borrando todos 841 00:35:39,400 --> 00:35:41,239 pero no, no queremos borrar todos 842 00:35:41,239 --> 00:35:43,300 queremos borrar solo los que sean 843 00:35:43,300 --> 00:35:45,239 autor, pues entonces aquí lo que incluiríamos es 844 00:35:45,239 --> 00:35:47,460 a ver, si este disco 845 00:35:47,460 --> 00:35:49,380 de aquí, su autor 846 00:35:49,380 --> 00:35:51,179 resulta que es igual 847 00:35:51,179 --> 00:35:53,139 al autor que me han dado como parámetro 848 00:35:53,139 --> 00:35:55,239 pues entonces 849 00:35:55,760 --> 00:35:57,340 it, porque ahora 850 00:35:57,340 --> 00:35:58,599 me it está posicionado ahí 851 00:35:58,599 --> 00:36:01,199 remove, y esto no 852 00:36:01,199 --> 00:36:03,059 nos va a dar error de concurrencia, porque 853 00:36:03,059 --> 00:36:05,039 el iterador ya es un objeto 854 00:36:05,039 --> 00:36:07,059 aparte que gestiona la concurrencia 855 00:36:07,059 --> 00:36:09,280 entre el while y... 856 00:36:09,280 --> 00:36:10,039 ¿Vale? 857 00:36:14,659 --> 00:36:16,900 Un segundinín que digo lo último y ya me preguntas. 858 00:36:17,239 --> 00:36:18,480 O es un descansito, era. 859 00:36:19,000 --> 00:36:20,840 Vale, pues digo lo último y un descansito. 860 00:36:21,579 --> 00:36:22,420 Cuidado aquí. 861 00:36:23,579 --> 00:36:25,179 Yo lo he... 862 00:36:25,179 --> 00:36:26,880 ¿Vale? Cuidado aquí porque 863 00:36:26,880 --> 00:36:28,980 cada it next que hagas 864 00:36:28,980 --> 00:36:30,239 te avanza. 865 00:36:30,860 --> 00:36:32,860 Entonces, imaginaos que en lugar de haberlo 866 00:36:32,860 --> 00:36:33,679 guardado aquí, 867 00:36:33,679 --> 00:36:35,920 yo hago un it next, 868 00:36:35,920 --> 00:36:39,820 Por ejemplo, imaginaos que hago esto 869 00:36:39,820 --> 00:36:42,380 Pensando, avanza 870 00:36:42,380 --> 00:36:45,159 Y ahora como no lo tengo guardado en ningún sitio 871 00:36:45,159 --> 00:36:47,539 Pues sustituyo esto por esto 872 00:36:47,539 --> 00:36:50,960 Cuidado, o sea, cada next te avanza una posición 873 00:36:50,960 --> 00:36:53,739 No, a ver 874 00:36:53,739 --> 00:36:57,659 Lo que estoy diciendo, itnext.getAutor 875 00:36:57,659 --> 00:36:59,579 A ver, cuidados 876 00:36:59,579 --> 00:37:01,099 Cada next te avanza una posición 877 00:37:01,099 --> 00:37:03,239 Entonces imaginaos que yo he hecho un itnext aquí 878 00:37:03,239 --> 00:37:04,920 Creyendo que con eso avanzo 879 00:37:04,920 --> 00:37:06,860 para el literador, que es lo que tengo que hacer, efectivamente 880 00:37:06,860 --> 00:37:08,719 lo he avanzado, vale 881 00:37:08,719 --> 00:37:10,980 e in next me devuelve el objeto disco 882 00:37:10,980 --> 00:37:12,960 vale, pero si vuelvo a hacer otro 883 00:37:12,960 --> 00:37:15,019 in next aquí para coger el objeto disco 884 00:37:15,019 --> 00:37:17,179 ya me he avanzado al siguiente 885 00:37:17,179 --> 00:37:19,019 entonces, dentro de este 886 00:37:19,019 --> 00:37:20,820 while, estaría avanzando 887 00:37:20,820 --> 00:37:22,159 de dos en dos, avanzo uno 888 00:37:22,159 --> 00:37:25,059 y luego avanzo otro, y ya de este miro el autor 889 00:37:25,059 --> 00:37:26,739 entonces, cuidado 890 00:37:26,739 --> 00:37:28,340 por eso lo he guardado en un sitio 891 00:37:28,340 --> 00:37:30,400 para no avanzarlo dos veces 892 00:37:30,400 --> 00:37:33,119 lo he guardado aquí, digo, a ver, avanza una vez 893 00:37:33,119 --> 00:37:34,900 solo una, avanza una 894 00:37:34,920 --> 00:37:37,199 el disco al que has avanzado es este 895 00:37:37,199 --> 00:37:39,539 vale, pues si este disco 896 00:37:39,539 --> 00:37:41,199 y este disco 897 00:37:41,199 --> 00:37:42,380 su autor es este 898 00:37:42,380 --> 00:37:45,039 me lo borras, porque el iterador está 899 00:37:45,039 --> 00:37:47,179 colocado en él, vale, ojo 900 00:37:47,179 --> 00:37:49,139 porque cada it next dentro del 901 00:37:49,139 --> 00:37:50,860 bucle, va, te va saltando, te va saltando 902 00:37:50,860 --> 00:37:51,480 dime 903 00:37:51,480 --> 00:37:55,260 el it next, lo que te devuelve 904 00:37:55,260 --> 00:37:57,219 es el disco anterior al que has saltado 905 00:37:57,219 --> 00:37:59,059 no, no, no, el disco en el que te acabas de 906 00:37:59,059 --> 00:38:00,739 colocar, it 907 00:38:00,739 --> 00:38:03,019 el iterador inicial, si tu 908 00:38:03,019 --> 00:38:04,960 colección es este, este y este 909 00:38:04,960 --> 00:38:06,960 de tres, el iterador inicialmente 910 00:38:06,960 --> 00:38:08,719 se queda colocado antes del 911 00:38:08,719 --> 00:38:10,519 primero, entonces 912 00:38:10,519 --> 00:38:12,800 el primer itnex se coloca en el primero 913 00:38:12,800 --> 00:38:14,820 y te devuelve el primero, y hasta que 914 00:38:14,820 --> 00:38:16,820 tú no hagas un itnex, el iterador está 915 00:38:16,820 --> 00:38:18,699 ahí colocado, vale 916 00:38:18,699 --> 00:38:20,699 si yo hiciera otro itnex ya estaría en el siguiente 917 00:38:20,699 --> 00:38:22,760 entonces por eso la mejor forma de no 918 00:38:22,760 --> 00:38:25,099 colocar, de no confundirse 919 00:38:25,099 --> 00:38:26,800 es que tú hagas un 920 00:38:26,800 --> 00:38:28,840 itnex, cojas el objeto 921 00:38:28,840 --> 00:38:30,860 con ese objeto hagas ya todo lo que 922 00:38:30,860 --> 00:38:32,840 quieras aquí, no vaya a ser que te saltes 923 00:38:32,840 --> 00:38:34,559 al siguiente sin querer, hagas todo lo que quieras 924 00:38:34,559 --> 00:38:36,760 y no hagas el siguiente index hasta 925 00:38:36,760 --> 00:38:37,739 la siguiente vuelta 926 00:38:37,739 --> 00:38:39,920 ¿vale? entonces 927 00:38:39,920 --> 00:38:43,079 esta versión ya no nos va a dar ese error 928 00:38:43,079 --> 00:38:47,159 la probamos y descansamos 929 00:38:47,159 --> 00:38:50,639 vale 930 00:38:50,639 --> 00:38:52,860 vamos a volver a ejecutar esto 931 00:38:52,860 --> 00:38:54,539 a ver si lo hemos escrito bien 932 00:38:54,539 --> 00:38:56,880 vamos a meter tres autores 933 00:38:56,880 --> 00:38:58,579 vamos a simular la misma situación de antes 934 00:38:58,579 --> 00:39:01,139 el autor uno que me ha escrito 935 00:39:01,139 --> 00:39:02,579 este disco 936 00:39:02,579 --> 00:39:04,980 el autor uno que ha 937 00:39:04,980 --> 00:39:06,340 escrito este otro 938 00:39:06,340 --> 00:39:10,320 y el autor 2 que ya ha escrito 939 00:39:10,320 --> 00:39:12,179 uno cualquiera 940 00:39:12,179 --> 00:39:16,420 vamos a borrar el autor a 1 941 00:39:16,420 --> 00:39:18,719 y aquí no da error 942 00:39:18,719 --> 00:39:21,079 a ver si lo visualizará con un for 943 00:39:21,079 --> 00:39:22,960 veríamos que sí, que efectivamente me los ha borrado 944 00:39:22,960 --> 00:39:25,000 solo hay uno, lo podríais añadir 945 00:39:25,000 --> 00:39:26,980 que lo recorra para ver si están 946 00:39:26,980 --> 00:39:29,219 pero como veis aquí no ha dado el error 947 00:39:29,219 --> 00:39:30,760 en una situación idéntica a la anterior 948 00:39:30,760 --> 00:39:32,960 ¿vale? 949 00:39:33,380 --> 00:39:36,059 no hombre, no 950 00:39:36,059 --> 00:39:38,199 y venga