1 00:00:01,000 --> 00:00:05,400 Venga, pues vamos a seguir avanzando un poquito, estamos muy atascados y muy parados. 2 00:00:06,200 --> 00:00:06,759 ¿Vale? 3 00:00:17,559 --> 00:00:20,519 Bueno, pues esto sería otro tema, ¿vale? 4 00:00:21,379 --> 00:00:25,559 Dejamos ahí ya esbozada la herencia y la implementación de interfaces, 5 00:00:25,559 --> 00:00:28,179 que ya más o menos conocemos 6 00:00:28,179 --> 00:00:29,760 primero 7 00:00:29,760 --> 00:00:31,519 qué sentido tiene que exista 8 00:00:31,519 --> 00:00:33,759 es lo más importante, qué sentido tiene que exista 9 00:00:33,759 --> 00:00:35,799 y segundo 10 00:00:35,799 --> 00:00:38,060 cómo se programa ya 11 00:00:38,060 --> 00:00:39,979 usando herencia e implementación 12 00:00:39,979 --> 00:00:41,880 pues bueno, ya que tenemos esbozado eso más o menos 13 00:00:41,880 --> 00:00:43,960 pues vamos ya a introducir 14 00:00:43,960 --> 00:00:45,060 más 15 00:00:45,060 --> 00:00:47,920 conceptos 16 00:00:47,920 --> 00:00:49,799 que usan precisamente herencia 17 00:00:49,799 --> 00:00:50,759 e implementación 18 00:00:50,759 --> 00:00:52,240 la usan 19 00:00:52,240 --> 00:00:56,320 todas sus variantes 20 00:00:56,320 --> 00:00:57,020 entonces 21 00:00:57,020 --> 00:00:59,780 todo lo que se puede hacer en Java 22 00:00:59,780 --> 00:01:01,600 todo lo que se puede hacer en Java 23 00:01:01,600 --> 00:01:03,200 ya lo sabemos 24 00:01:03,200 --> 00:01:05,060 ya lo sabemos hacer todo 25 00:01:05,060 --> 00:01:07,840 lo que pasa es que claro, si uno lo hace 26 00:01:07,840 --> 00:01:09,439 todo a mano 27 00:01:09,439 --> 00:01:11,680 pues entonces tiene muchísimo 28 00:01:11,680 --> 00:01:12,719 trabajo que hacer 29 00:01:12,719 --> 00:01:15,659 entonces gracias a que Java es un lenguaje 30 00:01:15,659 --> 00:01:16,599 de programación y de datos 31 00:01:16,599 --> 00:01:19,140 el código 32 00:01:19,140 --> 00:01:21,920 se distribuye en clases distintas 33 00:01:21,920 --> 00:01:23,879 y ahora ya sabemos que esas clases 34 00:01:23,879 --> 00:01:25,920 son muy fácilmente reutilizables 35 00:01:25,920 --> 00:01:26,780 muy fácilmente 36 00:01:26,780 --> 00:01:29,760 tú en una clase tienes un trozo 37 00:01:29,760 --> 00:01:31,540 de código con un método que hace cosas 38 00:01:31,540 --> 00:01:33,200 pues ahora ya 39 00:01:33,200 --> 00:01:35,659 desde cualquier otra puedes llamar a ese método 40 00:01:35,659 --> 00:01:37,000 para hacer eso, ¿vale? 41 00:01:37,060 --> 00:01:38,420 eso ya es una reutilización 42 00:01:38,420 --> 00:01:40,920 tú tienes una clase que hace cosas 43 00:01:40,920 --> 00:01:43,340 y esa clase la utilizas ya el resto de tu vida 44 00:01:43,340 --> 00:01:45,819 ¿vale? reutilización 45 00:01:45,819 --> 00:01:47,859 ¿qué otras 46 00:01:47,859 --> 00:01:49,299 formas de reutilización tenemos? 47 00:01:49,579 --> 00:01:51,299 pues precisamente la herencia, tú tienes una clase 48 00:01:51,299 --> 00:01:53,159 si heredas de ella 49 00:01:53,159 --> 00:01:55,019 ya tienes mucho hecho 50 00:01:55,019 --> 00:01:57,579 eso es otra forma de reutilización 51 00:01:57,579 --> 00:01:59,079 entonces 52 00:01:59,079 --> 00:02:01,519 los lenguajes de programación 53 00:02:01,519 --> 00:02:02,340 en todos los objetos 54 00:02:02,340 --> 00:02:04,579 sobre todo lo que han aportado 55 00:02:04,579 --> 00:02:07,180 lo único que han aportado respecto a la programación 56 00:02:07,180 --> 00:02:08,900 estructurada de 57 00:02:08,900 --> 00:02:11,340 y variables una tras otra 58 00:02:11,340 --> 00:02:12,879 lo que han aportado es 59 00:02:12,879 --> 00:02:14,680 cómo organizar el código 60 00:02:14,680 --> 00:02:17,400 y la facilidad para reutilizarlo 61 00:02:17,400 --> 00:02:19,099 no tenerlo que hacer nosotros todo 62 00:02:19,099 --> 00:02:20,699 así en plan chorizo 63 00:02:20,699 --> 00:02:24,060 Bueno, pues todo lo que vamos a ver a partir de ahora 64 00:02:24,060 --> 00:02:26,020 Y todo lo más que podáis ver en Java 65 00:02:26,020 --> 00:02:26,500 Todo 66 00:02:26,500 --> 00:02:29,840 Es precisamente cómo utilizar clases 67 00:02:29,840 --> 00:02:31,000 Que están ya hechas 68 00:02:31,000 --> 00:02:33,840 Ya está, cómo utilizar clases que están ya hechas 69 00:02:33,840 --> 00:02:36,240 Y cómo están hechas por dentro 70 00:02:36,240 --> 00:02:37,599 Con lo que sabéis 71 00:02:37,599 --> 00:02:39,300 Porque no hay nada que no sepáis 72 00:02:39,300 --> 00:02:41,039 ¿Vale? 73 00:02:41,699 --> 00:02:43,039 Lo que pasa es que efectivamente 74 00:02:43,039 --> 00:02:45,099 Si uno tiene que hacerlo todo él 75 00:02:45,099 --> 00:02:47,500 Le queda una aplicación inmanejable 76 00:02:47,500 --> 00:02:49,939 Entonces siempre utilizamos clases que están ya hechas 77 00:02:49,939 --> 00:02:52,400 como hasta ahora hemos hecho con la clase string 78 00:02:52,400 --> 00:02:54,819 con la clase scatter y con algunas otras 79 00:02:54,819 --> 00:02:56,360 pero luego 80 00:02:56,360 --> 00:02:58,539 finalmente en última instancia 81 00:02:58,539 --> 00:03:00,000 hacer un desarrollo de una aplicación 82 00:03:00,000 --> 00:03:02,120 lenguaje de todo objeto se traduce en utilizar 83 00:03:02,120 --> 00:03:03,580 un montón de cosas que ya están ya hechas 84 00:03:03,580 --> 00:03:06,060 ¿significa eso que esto es fácil? 85 00:03:06,939 --> 00:03:08,240 en absoluto 86 00:03:08,240 --> 00:03:09,780 en absoluto porque 87 00:03:09,780 --> 00:03:12,560 para que las cosas funcionen hay que entender muy bien 88 00:03:12,560 --> 00:03:13,759 que es lo que uno está usando 89 00:03:13,759 --> 00:03:15,659 porque si no lo entiende bien 90 00:03:15,659 --> 00:03:16,680 si no lo entiende bien 91 00:03:16,680 --> 00:03:19,159 si no lo entiende 92 00:03:19,159 --> 00:03:20,580 no lo va a usar bien 93 00:03:20,580 --> 00:03:23,939 y le va a quedar una aplicación que no tiene ningún sentido 94 00:03:23,939 --> 00:03:25,580 aunque no tenga errores de compilación 95 00:03:25,580 --> 00:03:28,060 eso es lo de menos, hacer una aplicación sin errores de compilación 96 00:03:28,060 --> 00:03:29,379 es muy sencillo 97 00:03:29,379 --> 00:03:31,439 hacer una aplicación que haga lo que tiene que hacer 98 00:03:31,439 --> 00:03:33,080 eso es lo complicado 99 00:03:33,080 --> 00:03:34,240 que haga lo que tiene que hacer 100 00:03:34,240 --> 00:03:37,319 y para eso no se trata de utilizar clases 101 00:03:37,319 --> 00:03:39,180 como si fuera esto hacer un Petris 102 00:03:39,180 --> 00:03:41,360 en absoluto, hay que entenderlas bien 103 00:03:41,360 --> 00:03:43,120 y entenderlas más 104 00:03:43,120 --> 00:03:44,039 de todo lo que hemos visto 105 00:03:44,039 --> 00:03:46,520 bueno, pues entonces 106 00:03:46,520 --> 00:03:49,060 esto de ahora es un poquito 107 00:03:49,060 --> 00:03:51,599 vamos a aprender a utilizar clases que están ya hechas 108 00:03:51,599 --> 00:03:53,580 para empezar a solucionarnos 109 00:03:53,580 --> 00:03:55,280 problemas que hemos identificado 110 00:03:55,280 --> 00:03:57,240 que están ahí y que hasta ahora hemos solucionado 111 00:03:57,240 --> 00:03:59,379 a mano, o sea, hemos solucionado programándolos 112 00:03:59,379 --> 00:04:00,199 nosotros directamente 113 00:04:00,199 --> 00:04:03,319 pues resulta que hay clases que nos lo pueden solucionar 114 00:04:03,319 --> 00:04:05,319 bueno, pues uno de esos problemas 115 00:04:05,319 --> 00:04:06,479 que hemos identificado 116 00:04:06,479 --> 00:04:09,319 que da mucha guerra, es el problema 117 00:04:09,319 --> 00:04:11,400 del almacenamiento 118 00:04:11,400 --> 00:04:15,219 almacenamiento de variables, ¿verdad? 119 00:04:22,459 --> 00:04:23,699 el almacenamiento 120 00:04:23,699 --> 00:04:25,480 de los datos de la aplicación. 121 00:04:25,620 --> 00:04:27,540 Ese problema, en realidad, ya nos da 122 00:04:27,540 --> 00:04:29,639 mucha guerra. Si uno tiene datos 123 00:04:29,639 --> 00:04:31,519 sueltos, tres, cuatro numeritos, 124 00:04:32,139 --> 00:04:33,720 una cadena, pues, hombre, 125 00:04:33,860 --> 00:04:35,779 no es tan complicado resolver ese problema. 126 00:04:36,379 --> 00:04:37,519 Se hace sus variables 127 00:04:37,519 --> 00:04:43,339 y, bueno, y ya está. 128 00:04:43,339 --> 00:04:45,300 Ahí va a tirar. Pero si uno tiene 129 00:04:45,300 --> 00:04:47,439 una colección de datos enorme, muchísimos 130 00:04:47,439 --> 00:04:49,540 datos, un montón de clientes, 131 00:04:49,959 --> 00:04:51,180 un montón de números, 132 00:04:51,360 --> 00:04:53,139 un montón de DNIs, que es lo habitual 133 00:04:53,139 --> 00:04:55,420 en una aplicación que tenga un volumen 134 00:04:55,420 --> 00:04:56,339 de datos enorme 135 00:04:56,339 --> 00:04:58,459 pues esto ya sabemos que no 136 00:04:58,459 --> 00:05:01,360 vale, pues que era el salto 137 00:05:01,360 --> 00:05:02,100 que habíamos dado 138 00:05:02,100 --> 00:05:04,540 el array, vale 139 00:05:04,540 --> 00:05:07,279 que el array es una estructura 140 00:05:07,279 --> 00:05:09,120 intrínseca a cualquier lenguaje 141 00:05:09,120 --> 00:05:09,800 de programación 142 00:05:09,800 --> 00:05:13,040 vale, pues bueno, dábamos el salto al array 143 00:05:13,040 --> 00:05:15,720 dábamos el salto 144 00:05:15,720 --> 00:05:16,259 al array 145 00:05:16,259 --> 00:05:17,620 y a la 146 00:05:17,620 --> 00:05:21,639 y ya con esto 147 00:05:21,639 --> 00:05:23,899 ya con esto podíamos guardar 148 00:05:23,899 --> 00:05:25,959 Muchos datos a la vez 149 00:05:25,959 --> 00:05:28,519 Más que a la vez 150 00:05:28,519 --> 00:05:30,740 Muchos datos bajo la misma referencia 151 00:05:30,740 --> 00:05:31,660 Bajo el mismo nombre 152 00:05:31,660 --> 00:05:34,680 ¿Vale? Muchos datos bajo el mismo nombre 153 00:05:34,680 --> 00:05:36,199 Pero del mismo tipo 154 00:05:36,199 --> 00:05:38,139 Del mismo tipo 155 00:05:38,139 --> 00:05:40,199 O de tipos heredados 156 00:05:40,199 --> 00:05:42,620 Que eso es lo que nos ha quedado claro con la herencia 157 00:05:42,620 --> 00:05:44,759 ¿Verdad? Del mismo tipo de datos heredados 158 00:05:44,759 --> 00:05:46,439 Bueno, pues vale 159 00:05:46,439 --> 00:05:47,939 Ese problema ya lo tenemos resuelto 160 00:05:47,939 --> 00:05:49,939 Y ya está, y es lo que hay, y no hay más 161 00:05:49,939 --> 00:05:52,360 Y no hay otra manera de resolverlo 162 00:05:52,360 --> 00:05:53,220 Ya está, no hay otra 163 00:05:53,220 --> 00:05:55,360 lo que pasa es que 164 00:05:55,360 --> 00:05:57,100 esto se nos hace un rollo 165 00:05:57,100 --> 00:05:58,579 ¿se nos hace un rollo por qué? 166 00:06:00,139 --> 00:06:02,160 pues porque cada vez que cambiamos 167 00:06:02,160 --> 00:06:02,980 el tamaño 168 00:06:02,980 --> 00:06:05,500 tenemos que cambiar el array enterito 169 00:06:05,500 --> 00:06:07,220 ¿vale? tenemos que cambiarlo entero 170 00:06:07,220 --> 00:06:09,100 no hay otra porque los arrays funcionan así 171 00:06:09,100 --> 00:06:10,720 y no hay otra, no hay alternativa 172 00:06:10,720 --> 00:06:11,800 los arrays funcionan así 173 00:06:11,800 --> 00:06:13,519 si yo declaro este array 174 00:06:13,519 --> 00:06:18,459 de 27 posiciones 175 00:06:18,459 --> 00:06:20,839 ese array se ha quedado de 27 176 00:06:20,839 --> 00:06:23,259 y nunca jamás va a poder ser de otro tamaño 177 00:06:23,259 --> 00:06:24,920 nunca va a poder ser de otro tamaño 178 00:06:24,920 --> 00:06:27,100 si yo quiero un array de otro tamaño 179 00:06:27,100 --> 00:06:28,160 esto 180 00:06:28,160 --> 00:06:30,800 me tengo que deshacer de él 181 00:06:30,800 --> 00:06:32,079 y hacer otro nuevo 182 00:06:32,079 --> 00:06:34,959 es lo único que puedo hacer, lo único 183 00:06:34,959 --> 00:06:37,139 por eso es una estructura estática 184 00:06:37,139 --> 00:06:38,839 ¿vale? y eso es lo que hay 185 00:06:38,839 --> 00:06:41,120 y no hay más, y no hay más que se pueda hacer 186 00:06:41,120 --> 00:06:42,360 ya está, no hay más 187 00:06:42,360 --> 00:06:44,720 lo que pasa es que uno puede decir 188 00:06:44,720 --> 00:06:47,040 bueno, pues me voy a hacer yo clases 189 00:06:47,040 --> 00:06:49,120 clases que ya 190 00:06:49,120 --> 00:06:50,800 programen automáticamente 191 00:06:50,800 --> 00:06:52,560 esto de destrozar el array 192 00:06:52,560 --> 00:06:53,579 y hacer uno nuevo 193 00:06:53,579 --> 00:06:56,060 y así no lo tengo que escribir yo a mano 194 00:06:56,060 --> 00:06:57,759 todo el rato, como hemos hecho hasta ahora 195 00:06:57,759 --> 00:06:58,860 ¿vale? 196 00:06:59,939 --> 00:07:02,000 pero esas clases lo único que hacen es meter 197 00:07:02,000 --> 00:07:04,079 en métodos, tipo añadir 198 00:07:04,079 --> 00:07:06,160 al array, recuperar, meter en métodos 199 00:07:06,160 --> 00:07:07,939 exactamente lo que nosotros hemos 200 00:07:07,939 --> 00:07:10,100 escrito a mano, nada más, porque no hay nada más 201 00:07:10,100 --> 00:07:11,939 que se puede hacer para almacenar un montón 202 00:07:11,939 --> 00:07:13,120 de datos de golpe 203 00:07:13,120 --> 00:07:15,759 nada más que un array, no se puede hacer nada más 204 00:07:15,759 --> 00:07:17,660 ¿vale? pero bueno, hay clases 205 00:07:17,660 --> 00:07:20,079 que envuelven esto 206 00:07:20,079 --> 00:07:21,819 hay clases que te dicen 207 00:07:21,819 --> 00:07:22,980 oye, venga, yo ya tengo 208 00:07:22,980 --> 00:07:25,399 yo tengo un método add 209 00:07:25,399 --> 00:07:29,300 tú dame una cadena 210 00:07:29,300 --> 00:07:31,379 y yo 211 00:07:31,379 --> 00:07:33,459 pues dentro de este método ya te 212 00:07:33,459 --> 00:07:35,480 programo eso de hacer 213 00:07:35,480 --> 00:07:37,120 una array temporal en una posición mayor 214 00:07:37,120 --> 00:07:39,740 copiar uno en el otro, en la posición añadida 215 00:07:39,740 --> 00:07:41,399 copiar esto, ahora 216 00:07:41,399 --> 00:07:43,399 sustituir uno por otro, ya te lo hago yo 217 00:07:43,399 --> 00:07:45,500 te lo hago yo y tú limítate a llamar a add 218 00:07:45,500 --> 00:07:47,540 vale, eso es una cosa que 219 00:07:47,540 --> 00:07:49,199 tenemos y que ya está hecha en una clase 220 00:07:49,199 --> 00:07:51,100 que ahora veremos 221 00:07:51,100 --> 00:07:55,399 que podemos programar y utilizar de forma sencilla. 222 00:07:57,379 --> 00:08:00,399 Lo que pasa es que la gente que idea y piensa y dice, 223 00:08:00,579 --> 00:08:03,939 uff, esto está muy bien para guardar un montón de datos del mismo tipo, 224 00:08:12,300 --> 00:08:14,420 esta estructura de array está muy bien. 225 00:08:15,180 --> 00:08:21,060 Mi problema es este, que yo tengo un montón de datos del mismo tipo 226 00:08:21,060 --> 00:08:24,439 que necesito manejar de forma fácil todos juntos. 227 00:08:24,439 --> 00:08:26,300 entonces 228 00:08:26,300 --> 00:08:29,480 lo he ido a manejar de forma fácil 229 00:08:29,480 --> 00:08:30,079 entonces ya 230 00:08:30,079 --> 00:08:33,340 hemos dicho que declararlo en variables separadas 231 00:08:33,340 --> 00:08:35,200 S1, S2, S3 232 00:08:35,200 --> 00:08:36,460 S4, S5 233 00:08:36,460 --> 00:08:39,240 esto es un rollo, declararlo en variables separadas es un rollo 234 00:08:39,240 --> 00:08:41,320 ¿no? ¿cómo hago yo 235 00:08:41,320 --> 00:08:42,179 un recorrido? 236 00:08:43,179 --> 00:08:44,320 ¿variables separadas? no 237 00:08:44,320 --> 00:08:51,490 vale, pues lo que hemos dicho es, venga, pues a una raíz 238 00:08:51,490 --> 00:08:53,370 todas estas 239 00:08:53,370 --> 00:08:54,029 variables 240 00:08:54,029 --> 00:08:57,370 todas metiditas a una raíz 241 00:08:57,370 --> 00:09:00,070 vale, esta es la solución 242 00:09:00,070 --> 00:09:01,350 la única que tenemos 243 00:09:01,350 --> 00:09:03,210 todas metidas a un array 244 00:09:03,210 --> 00:09:06,389 entonces ahora este array ya tiene un único nombrecito 245 00:09:06,389 --> 00:09:07,549 y al tener un único nombre 246 00:09:07,549 --> 00:09:10,090 se me facilita el recorrido con sd0 247 00:09:10,090 --> 00:09:11,549 sd1, etcétera, lo que ya sabemos 248 00:09:11,549 --> 00:09:14,129 y luego el siguiente 249 00:09:14,129 --> 00:09:15,610 paso que hemos dicho es, oye 250 00:09:15,610 --> 00:09:17,169 si hay una clase 251 00:09:17,169 --> 00:09:19,610 que ya tiene los métodos hechos 252 00:09:19,610 --> 00:09:22,210 de insertar, eliminar 253 00:09:22,210 --> 00:09:23,990 de forma que yo llamo 254 00:09:23,990 --> 00:09:25,070 a esos métodos y ya 255 00:09:25,070 --> 00:09:27,450 y me ahorro toda la parte de hacer una array 256 00:09:27,450 --> 00:09:29,690 más grande, sustituir, pues fenomenal 257 00:09:29,690 --> 00:09:30,730 vale, esa clase está 258 00:09:30,730 --> 00:09:33,509 que se llama 259 00:09:33,509 --> 00:09:34,750 ArrayList, vale 260 00:09:34,750 --> 00:09:37,570 ya veremos como se usa y que 261 00:09:37,570 --> 00:09:39,490 particularidades 262 00:09:39,490 --> 00:09:40,629 tiene, que hay que entender 263 00:09:40,629 --> 00:09:43,470 para usarla bien, vale, pues esa clase se llama 264 00:09:43,470 --> 00:09:44,210 ArrayList y ya está 265 00:09:44,210 --> 00:09:46,090 vale, pero bueno 266 00:09:46,090 --> 00:09:49,129 esto está muy bien, pero jolines 267 00:09:49,129 --> 00:09:51,370 ya hemos vivido en nuestras carnes que 268 00:09:51,370 --> 00:09:53,570 a nosotros nos parece 269 00:09:53,570 --> 00:09:55,110 que llamara el método add 270 00:09:55,110 --> 00:09:56,909 de ArrayList 271 00:09:56,909 --> 00:09:59,870 para añadir una nueva cadena 272 00:09:59,870 --> 00:10:02,149 decimos add y nos creemos que es tan fácil 273 00:10:02,149 --> 00:10:03,909 ya sabemos que no es tan fácil 274 00:10:03,909 --> 00:10:06,029 porque ya sabemos que es lo que tiene este método dentro 275 00:10:06,029 --> 00:10:07,789 porque lo hemos hecho un montón de veces 276 00:10:07,789 --> 00:10:09,570 quitar el Array 277 00:10:09,570 --> 00:10:11,909 hacer uno nuevo, copiar uno en otro 278 00:10:11,909 --> 00:10:13,909 copiar uno en otro 279 00:10:13,909 --> 00:10:15,850 implica consumir muchos ciclos 280 00:10:15,850 --> 00:10:17,490 de CPU, es decir 281 00:10:17,490 --> 00:10:18,389 hay mucho código 282 00:10:18,389 --> 00:10:21,850 para nosotros al final se acaba traduciendo 283 00:10:21,850 --> 00:10:23,649 en llamar a add de esta clase 284 00:10:23,649 --> 00:10:25,450 pero hay mucho código debajo 285 00:10:25,450 --> 00:10:26,750 que lo hemos hecho nosotros también 286 00:10:26,750 --> 00:10:29,230 un montón de ciclos de CPU 287 00:10:29,230 --> 00:10:30,629 copiando, pegando, etc 288 00:10:30,629 --> 00:10:33,330 entonces, pues los que piensan y todo eso 289 00:10:33,330 --> 00:10:34,909 dicen, ¿habría alguna otra manera? 290 00:10:35,610 --> 00:10:36,750 ¿habría alguna otra manera 291 00:10:36,750 --> 00:10:39,610 de guardar un montón de datos del mismo tipo? 292 00:10:39,710 --> 00:10:41,269 se me ocurriría con lo que sabemos 293 00:10:41,269 --> 00:10:42,769 con lo que sabemos, no con nada nuevo 294 00:10:42,769 --> 00:10:43,909 porque es que no hay nada nuevo 295 00:10:43,909 --> 00:10:46,129 se me ocurriría con lo que sabemos 296 00:10:46,129 --> 00:10:48,769 otra forma de guardar datos del mismo tipo 297 00:10:48,769 --> 00:10:50,610 que sea un poquito más eficiente 298 00:10:50,610 --> 00:10:52,970 a la hora de insertar 299 00:10:52,970 --> 00:10:54,429 y eliminar que esta 300 00:10:54,429 --> 00:10:57,049 porque es que esta es un rollo, repito 301 00:10:57,049 --> 00:10:59,269 esta implica tirar esto 302 00:10:59,269 --> 00:11:01,149 hacer otra, copiar 303 00:11:01,149 --> 00:11:03,429 habría una forma de guardar varios 304 00:11:03,429 --> 00:11:19,799 porque este es mi problema 305 00:11:19,799 --> 00:11:20,840 yo tengo un montón 306 00:11:20,840 --> 00:11:22,500 del mismo tipo 307 00:11:22,500 --> 00:11:25,980 y quiero hacer una estructura 308 00:11:25,980 --> 00:11:27,779 que me permita manejarlos 309 00:11:27,779 --> 00:11:29,080 de forma sencilla a todos 310 00:11:29,080 --> 00:11:30,460 bajo una misma referencia 311 00:11:30,460 --> 00:11:32,379 ya hemos visto que una es 312 00:11:32,379 --> 00:11:33,779 meterlos en la cajita del array 313 00:11:33,779 --> 00:11:34,460 esa es una 314 00:11:34,460 --> 00:11:38,320 bueno, pues se nos podría ocurrir otra 315 00:11:38,320 --> 00:11:43,899 a ver, es una pregunta muy difícil 316 00:11:43,899 --> 00:11:45,840 porque es muy complicado que a uno se le ocurra otra 317 00:11:45,840 --> 00:11:48,000 precisamente esa otra forma 318 00:11:48,000 --> 00:11:48,679 es la que voy a decir 319 00:11:48,679 --> 00:11:51,740 pero el problema sería 320 00:11:51,740 --> 00:11:53,840 ¿qué otra cosa puedo hacer? 321 00:11:54,159 --> 00:11:55,559 con un montón de datos sueltos 322 00:11:55,559 --> 00:11:57,200 que no sea meterlos en un array 323 00:11:57,200 --> 00:11:59,360 para trabajar con ellos 324 00:11:59,360 --> 00:12:01,360 bajo una misma referencia, una única 325 00:12:01,360 --> 00:12:03,559 y que sea sencillo 326 00:12:03,559 --> 00:12:05,620 que solamente un único nombre 327 00:12:05,620 --> 00:12:07,240 de variable, como ocurre con el array 328 00:12:07,240 --> 00:12:09,360 con el array tenemos un único nombre de variable 329 00:12:09,360 --> 00:12:11,740 el del array, y con eso ya accedemos a todo 330 00:12:11,740 --> 00:12:13,299 la 0, la 1, la 2 331 00:12:13,299 --> 00:12:15,379 pues se nos ocurre alguna otra forma 332 00:12:15,379 --> 00:12:17,279 que con un único nombre de variable 333 00:12:17,279 --> 00:12:19,419 me permita a mí hacer recorridos 334 00:12:19,419 --> 00:12:20,820 acceder a todos, etc. 335 00:12:24,730 --> 00:12:26,029 ¿Pero una constante? 336 00:12:26,529 --> 00:12:26,730 ¿Eh? 337 00:12:27,830 --> 00:12:30,409 ¿Pero una constante? 338 00:12:31,070 --> 00:12:32,149 ¿Usándola de qué manera? 339 00:12:32,629 --> 00:12:34,070 la de colección 340 00:12:34,070 --> 00:12:35,389 ¿perdón? 341 00:12:35,549 --> 00:12:36,129 de colección 342 00:12:36,129 --> 00:12:37,909 de array 343 00:12:37,909 --> 00:12:43,519 pero no te entiendo, si no me das más detalles 344 00:12:43,519 --> 00:12:45,320 o sea, la referencia única 345 00:12:45,320 --> 00:12:45,879 ¿cuál sería? 346 00:12:49,090 --> 00:12:50,230 que no entiendo lo que quieres decir 347 00:12:50,230 --> 00:12:54,710 o te explican mejor 348 00:12:54,710 --> 00:12:56,590 porque una constante colección de array 349 00:12:56,590 --> 00:12:58,129 no entiendo lo que quieres decir 350 00:12:58,129 --> 00:13:01,210 bueno, el problema es, bajo una única referencia 351 00:13:01,210 --> 00:13:03,190 poder recorrerlos 352 00:13:03,190 --> 00:13:04,950 todos, poder tener la información 353 00:13:04,950 --> 00:13:07,190 accesible bajo una única referencia 354 00:13:07,190 --> 00:13:08,730 como hace el array, ¿verdad? 355 00:13:09,250 --> 00:13:11,269 El array tiene bajo una única 356 00:13:11,269 --> 00:13:12,750 referencia el nombre del array 357 00:13:12,750 --> 00:13:18,340 bajo una única referencia 358 00:13:18,340 --> 00:13:20,399 que es esta, una única declaración de variable 359 00:13:20,399 --> 00:13:21,519 una única declaración 360 00:13:21,519 --> 00:13:23,740 los tiene accesibles a todos 361 00:13:23,740 --> 00:13:26,379 a través del corchete 362 00:13:26,379 --> 00:13:28,399 S0, S1, S2 363 00:13:28,399 --> 00:13:29,320 ¿vale? 364 00:13:29,899 --> 00:13:32,340 bajo una única referencia 365 00:13:32,340 --> 00:13:33,580 bajo un único nombre de variable 366 00:13:33,580 --> 00:13:35,980 ya los tiene todos, S0, S1, S2 367 00:13:35,980 --> 00:13:37,779 pues eso es lo que queremos 368 00:13:37,779 --> 00:13:40,279 habría alguna forma de bajo un único 369 00:13:40,279 --> 00:13:41,240 nombre de variable 370 00:13:41,240 --> 00:13:43,379 bajo un único nombre de variable 371 00:13:43,379 --> 00:13:45,000 declarar algo 372 00:13:45,000 --> 00:13:47,639 bajo un único nombre de variable que me permita 373 00:13:47,639 --> 00:13:48,519 acceder a todo 374 00:13:48,519 --> 00:13:50,980 y que no sea un array 375 00:13:50,980 --> 00:13:55,000 no es fácil, que a uno se le ocurra 376 00:13:55,000 --> 00:13:57,019 pero pues los que 377 00:13:57,019 --> 00:13:59,679 piensan y enseñan estas cosas 378 00:13:59,679 --> 00:14:02,139 dijeron, hombre, vamos a hacer un invento 379 00:14:02,139 --> 00:14:04,320 vale, esta referencia 380 00:14:04,320 --> 00:14:05,899 que sea la referencia 381 00:14:05,899 --> 00:14:06,679 de uno de ellos 382 00:14:06,679 --> 00:14:08,679 solo de uno, de este 383 00:14:08,679 --> 00:14:09,879 este que sea ese 384 00:14:09,879 --> 00:14:12,980 ¿vale? y ahora este dato 385 00:14:12,980 --> 00:14:15,980 le voy a pegar 386 00:14:15,980 --> 00:14:18,580 le voy a pegar 387 00:14:18,580 --> 00:14:21,120 la dirección del siguiente 388 00:14:21,120 --> 00:14:23,320 o sea, tendrá el dato 389 00:14:23,320 --> 00:14:25,080 el que sea 390 00:14:25,080 --> 00:14:27,000 su dato, pero le voy a pegar 391 00:14:27,000 --> 00:14:28,620 también la dirección 392 00:14:28,620 --> 00:14:30,340 del siguiente elemento 393 00:14:30,340 --> 00:14:33,000 vale, y ahora 394 00:14:33,000 --> 00:14:35,179 este tendrá su dato, lo que sea 395 00:14:35,179 --> 00:14:37,480 y le voy a pegar detrás 396 00:14:37,480 --> 00:14:39,179 la dirección del siguiente 397 00:14:39,179 --> 00:14:41,240 y ahora este 398 00:14:41,240 --> 00:14:42,159 tendrá su dato 399 00:14:42,159 --> 00:14:44,960 y le voy a pegar también detrás 400 00:14:44,960 --> 00:14:47,399 la dirección del siguiente, la referencia 401 00:14:47,399 --> 00:14:49,440 y ahora este 402 00:14:49,440 --> 00:14:51,279 tendrá su dato y le voy a pegar 403 00:14:51,279 --> 00:14:52,860 también la dirección del siguiente 404 00:14:52,860 --> 00:14:55,519 si este es el último, pues que le estoy pegando 405 00:14:55,519 --> 00:14:55,840 aquí 406 00:14:55,840 --> 00:14:59,220 la dirección de un objeto que ya no existe 407 00:14:59,220 --> 00:15:00,399 que le estaría pegando a ese 408 00:15:00,399 --> 00:15:02,360 ¿verdad? 409 00:15:03,639 --> 00:15:04,259 vale, pues 410 00:15:04,259 --> 00:15:06,639 una única referencia 411 00:15:06,639 --> 00:15:08,679 S, los datos 412 00:15:08,679 --> 00:15:09,980 están aquí guardaditos 413 00:15:09,980 --> 00:15:13,919 ¿qué nos hemos inventado? 414 00:15:14,779 --> 00:15:16,399 vamos a pegar a cada dato 415 00:15:16,399 --> 00:15:18,820 una especie de información de control 416 00:15:18,820 --> 00:15:20,419 que no forma parte del 417 00:15:20,419 --> 00:15:22,179 no es el dato así, si estos son cadenas 418 00:15:22,179 --> 00:15:24,440 hola, adiós, lo que sea, nombres, Pepito, Juanito 419 00:15:24,440 --> 00:15:26,539 pues es una información de control 420 00:15:26,539 --> 00:15:27,519 que está aquí pegadita 421 00:15:27,519 --> 00:15:29,460 que lo único que tiene es 422 00:15:29,460 --> 00:15:31,860 la dirección del siguiente 423 00:15:31,860 --> 00:15:36,799 y entonces bajo esta única referencia 424 00:15:36,799 --> 00:15:39,179 según yo vaya metiéndome los datos 425 00:15:39,179 --> 00:15:41,639 puedo llegar a este, si quiero llegar a este de aquí 426 00:15:41,639 --> 00:15:45,120 pues me meto en este, a través de este me meto en este 427 00:15:45,120 --> 00:15:46,399 y a través de este ya llego aquí 428 00:15:46,399 --> 00:15:51,220 entonces bajo esta única referencia en realidad tengo accesibles todos 429 00:15:51,220 --> 00:15:53,740 tengo accesibles todos, que es la idea 430 00:15:53,740 --> 00:15:57,279 tener todos accesibles bajo una única referencia 431 00:15:57,279 --> 00:15:59,480 incorporando 432 00:15:59,480 --> 00:16:02,899 esta especie de información aquí pegadita 433 00:16:02,899 --> 00:16:04,600 de control que va junto 434 00:16:04,600 --> 00:16:06,480 con el dato en sí, el dato ya el que sea 435 00:16:06,480 --> 00:16:07,960 el cliente, el nombre 436 00:16:07,960 --> 00:16:09,399 del usuario 437 00:16:09,399 --> 00:16:12,539 lo que sea, el dato que vaya ahí 438 00:16:12,539 --> 00:16:14,740 ¿vale? 439 00:16:14,820 --> 00:16:16,460 pues esta estructura es una estructura 440 00:16:16,460 --> 00:16:18,159 básica de almacenamiento de datos 441 00:16:18,159 --> 00:16:20,100 en programación de toda la vida 442 00:16:20,100 --> 00:16:20,759 básica 443 00:16:20,759 --> 00:16:24,620 que es la lista enlazada 444 00:16:24,620 --> 00:16:32,419 entonces la estructura de lista enlazada es básica 445 00:16:32,419 --> 00:16:34,080 en programación, es la que se ha usado 446 00:16:34,080 --> 00:16:36,419 siempre para guardar 447 00:16:36,419 --> 00:16:38,100 datos como alternativa al array 448 00:16:38,100 --> 00:16:41,720 ¿vale? como alternativa al array 449 00:16:41,720 --> 00:16:44,200 y uno diría 450 00:16:44,200 --> 00:16:45,360 ¿y qué me aporta esta? 451 00:16:46,419 --> 00:16:48,399 respecto al array, si ya tengo 452 00:16:48,399 --> 00:16:50,299 el array, ¿qué me aporta 453 00:16:50,299 --> 00:16:50,679 esta? 454 00:16:52,139 --> 00:16:53,899 hombre, pues esta me aporta que las 455 00:16:53,899 --> 00:16:55,100 inserciones 456 00:16:55,100 --> 00:16:58,299 y las eliminaciones de datos son mucho 457 00:16:58,299 --> 00:16:59,519 menos costosas 458 00:16:59,519 --> 00:17:01,220 computacionalmente 459 00:17:01,220 --> 00:17:04,039 aquí añadir un dato nuevo implica 460 00:17:04,039 --> 00:17:05,799 ala, hace aparecer el dato con el new 461 00:17:05,799 --> 00:17:07,839 Y ahora ya, esta 462 00:17:07,839 --> 00:17:10,140 La haces pasar de nula a este 463 00:17:10,140 --> 00:17:11,920 O sea, no tienes que 464 00:17:11,920 --> 00:17:14,000 Tirar nada a la basura 465 00:17:14,000 --> 00:17:16,140 Volverlo a construir, copiar de uno en otro 466 00:17:16,140 --> 00:17:16,960 Como con el array 467 00:17:16,960 --> 00:17:20,259 Meter un dato nuevo en la lista es facilísimo 468 00:17:20,259 --> 00:17:22,240 Llega uno a la lista y le da la mano al otro 469 00:17:22,240 --> 00:17:24,279 ¿Vale? Están todos dados de la mano 470 00:17:24,279 --> 00:17:26,059 Cuando llega uno 471 00:17:26,059 --> 00:17:28,019 Lo que haces, se da de la mano al último 472 00:17:28,019 --> 00:17:30,420 Y ya está, no tienes que hacer nada 473 00:17:30,420 --> 00:17:32,640 Para eliminar un dato 474 00:17:32,640 --> 00:17:34,319 Con el array era un rollo 475 00:17:34,319 --> 00:17:36,700 teníamos que hacer otro con una posición menos 476 00:17:36,700 --> 00:17:38,740 copiar y pegar saltándonos el primero 477 00:17:38,740 --> 00:17:40,779 todo eso tiene un coste computacional 478 00:17:40,779 --> 00:17:42,799 aunque nos lo haga la clase 479 00:17:42,799 --> 00:17:44,700 ArrayList ya porque ya lo tiene ya hecho 480 00:17:44,700 --> 00:17:46,700 por dentro y yo llamo al método, pero lo hace 481 00:17:46,700 --> 00:17:48,779 igual, eso es lo que se hace 482 00:17:48,779 --> 00:17:50,680 me da igual que lo haya programado yo 483 00:17:50,680 --> 00:17:52,839 que se lo encargue a la ArrayList 484 00:17:52,839 --> 00:17:54,660 eso computacionalmente es 485 00:17:54,660 --> 00:17:56,819 un rollo, sin embargo aquí 486 00:17:56,819 --> 00:17:58,839 que yo quiero eliminar este dato 487 00:17:58,839 --> 00:18:00,640 este se va de la lista 488 00:18:00,640 --> 00:18:02,660 y ahora los que se dan la mano son 489 00:18:02,660 --> 00:18:04,519 simplemente este y este 490 00:18:04,519 --> 00:18:06,799 este se suelta de la mano 491 00:18:06,799 --> 00:18:08,539 de ese se suelta y estos dos ya se la dan 492 00:18:08,539 --> 00:18:10,640 y ya está, y lo han dejado y puenteado 493 00:18:10,640 --> 00:18:12,960 no hay datos que copiar 494 00:18:12,960 --> 00:18:14,940 ni que eliminar, ni que nada, no hay nada 495 00:18:14,940 --> 00:18:16,619 entonces 496 00:18:16,619 --> 00:18:18,539 insertar nuevos elementos 497 00:18:18,539 --> 00:18:20,099 en esta colección 498 00:18:20,099 --> 00:18:23,380 y sacar elementos de esta colección 499 00:18:23,380 --> 00:18:25,339 a nivel computacional 500 00:18:25,339 --> 00:18:26,240 de acciones 501 00:18:26,240 --> 00:18:29,279 que hay que hacer es muchísimo 502 00:18:29,279 --> 00:18:31,460 más sencillo que con el array 503 00:18:31,460 --> 00:18:32,599 mucho más sencillo 504 00:18:32,599 --> 00:18:35,000 ¿Vale? Te estás durmiendo, Miguel 505 00:18:35,000 --> 00:18:37,240 Cosa que, con lo interesante que es 506 00:18:37,240 --> 00:18:38,660 No puedo entenderlo 507 00:18:38,660 --> 00:18:39,559 Pero bueno, ¿eh? 508 00:18:43,339 --> 00:18:45,019 Pero chico, que tienes 20 años 509 00:18:45,019 --> 00:18:45,940 Y 19, 18 510 00:18:45,940 --> 00:18:48,359 Yo tampoco 511 00:18:48,359 --> 00:18:49,700 Ni aquí me tienes 512 00:18:49,700 --> 00:18:52,240 Está claro 513 00:18:52,240 --> 00:18:54,079 Bueno, a ver 514 00:18:54,079 --> 00:19:00,799 Bueno, vale 515 00:19:00,799 --> 00:19:01,400 Entonces 516 00:19:01,400 --> 00:19:04,539 esto es lo que aporta 517 00:19:04,539 --> 00:19:05,960 esto es lo que aporta 518 00:19:05,960 --> 00:19:08,559 entonces dices, bueno, tampoco es tan crítico 519 00:19:08,559 --> 00:19:10,200 hombre, pues sí que es crítico 520 00:19:10,200 --> 00:19:11,940 en una aplicación 521 00:19:11,940 --> 00:19:13,720 en la que tienes que estar 522 00:19:13,720 --> 00:19:16,799 una aplicación que una de las funcionalidades principales 523 00:19:16,799 --> 00:19:18,720 es insertar y quitar datos 524 00:19:18,720 --> 00:19:20,900 en una en la que tienes que insertar 525 00:19:20,900 --> 00:19:22,140 y quitar datos todo el rato 526 00:19:22,140 --> 00:19:24,200 nunca cogerías un ArrayList 527 00:19:24,200 --> 00:19:26,420 porque es que 528 00:19:26,420 --> 00:19:28,440 metería mucha carga, si ya la máquina virtual 529 00:19:28,440 --> 00:19:30,640 mete carga, si encima metes 530 00:19:30,640 --> 00:19:32,599 un ArrayList en una aplicación en la que tú sabes 531 00:19:32,599 --> 00:19:34,539 que los usuarios van a estar todo el rato insertando 532 00:19:34,539 --> 00:19:36,400 y eliminando de los datos 533 00:19:36,400 --> 00:19:37,819 pues ya hay colmo 534 00:19:37,819 --> 00:19:40,160 ya sí que la ralentizas 535 00:19:40,160 --> 00:19:42,680 en una aplicación en la que estés sobre todo 536 00:19:42,680 --> 00:19:44,200 insertando y quitando datos 537 00:19:44,200 --> 00:19:46,019 elegirás esta estructura 538 00:19:46,019 --> 00:19:50,269 lo que pasa es que ¿qué pega tiene esta 539 00:19:50,269 --> 00:19:52,210 estructura? que como ahora veremos, porque la vamos a 540 00:19:52,210 --> 00:19:54,230 programar, como ahora veremos 541 00:19:54,230 --> 00:19:56,269 el recorrido es más complicado 542 00:19:56,269 --> 00:19:58,369 la consulta, con un Array 543 00:19:58,369 --> 00:20:00,069 cuando tú quieres el dato 544 00:20:00,069 --> 00:20:01,910 de posición 7 545 00:20:01,910 --> 00:20:03,549 facilísimo 546 00:20:03,549 --> 00:20:05,750 haces S7 547 00:20:05,750 --> 00:20:07,029 y ya está, ya lo tienes 548 00:20:07,029 --> 00:20:08,210 va por índice 549 00:20:08,210 --> 00:20:10,450 en un array tú accedes con índice 550 00:20:10,450 --> 00:20:13,569 das el índice, quiere la posición 3 551 00:20:13,569 --> 00:20:14,750 ala, ya la tienes 552 00:20:14,750 --> 00:20:16,049 S3 553 00:20:16,049 --> 00:20:19,089 accedes por índice, luego las consultas 554 00:20:19,089 --> 00:20:21,549 el consultar lo que hay en un sitio 555 00:20:21,549 --> 00:20:23,049 es mucho más rápido 556 00:20:23,049 --> 00:20:25,329 pero una lista enlazada 557 00:20:25,329 --> 00:20:28,509 para consultar lo que está en la posición 3 558 00:20:28,509 --> 00:20:31,009 tienes que ir navegando 559 00:20:31,009 --> 00:20:34,029 entrar por aquí, de aquí vas por aquí 560 00:20:34,029 --> 00:20:35,710 de aquí vas por aquí, de aquí vas por aquí 561 00:20:35,710 --> 00:20:38,069 luego consultar lo que tiene 562 00:20:38,069 --> 00:20:38,490 un dato 563 00:20:38,490 --> 00:20:41,769 es más costoso computacionalmente 564 00:20:41,769 --> 00:20:43,710 porque tienes que ir avanzando aquí con las manitas 565 00:20:43,710 --> 00:20:44,490 hasta que llegas 566 00:20:44,490 --> 00:20:46,470 no va por índice como este 567 00:20:46,470 --> 00:20:48,910 entonces cuál es mejor o cuál es peor 568 00:20:48,910 --> 00:20:51,690 depende del uso 569 00:20:51,690 --> 00:20:53,829 que vayamos a dar a esa estructura 570 00:20:53,829 --> 00:20:54,349 de datos 571 00:20:54,349 --> 00:20:57,369 si sobre todo la aplicación 572 00:20:57,369 --> 00:20:59,130 va a necesitar 573 00:20:59,130 --> 00:21:01,109 muchas inserciones y borrados 574 00:21:01,109 --> 00:21:03,309 uno elegiría esta 575 00:21:03,309 --> 00:21:07,029 pero si la aplicación sobre todo 576 00:21:07,029 --> 00:21:08,670 va a hacer 577 00:21:08,670 --> 00:21:11,049 muchas consultas, es sobre todo 578 00:21:11,049 --> 00:21:13,150 para consultar y no para insertar 579 00:21:13,150 --> 00:21:15,049 y borrar, pues elegiríamos esta 580 00:21:15,049 --> 00:21:15,509 sin duda 581 00:21:15,509 --> 00:21:21,029 cuando hay pocos datos 582 00:21:21,029 --> 00:21:23,289 son diferentes criterios 583 00:21:23,289 --> 00:21:25,069 cuando hay pocos datos, es una 584 00:21:25,069 --> 00:21:27,349 aplicación mía que yo necesito 585 00:21:27,349 --> 00:21:28,910 nada, tener ahí 10 numeritos 586 00:21:28,910 --> 00:21:31,210 que voy a hacer cosas con ellos, pues con 10 numeritos 587 00:21:31,210 --> 00:21:33,150 uno hace un ArrayList y ya está 588 00:21:33,150 --> 00:21:34,789 no se complica, porque un Array de 10 589 00:21:34,789 --> 00:21:35,609 no tiene ningún peso 590 00:21:35,609 --> 00:21:38,410 pero una aplicación en la que estás trabajando 591 00:21:38,410 --> 00:21:40,809 con 20.000 usuarios que tienes que 592 00:21:40,809 --> 00:21:42,650 volcar de la base de datos 593 00:21:42,650 --> 00:21:44,730 a una colección, pues nunca 594 00:21:44,730 --> 00:21:46,910 usarías un ArrayList, un Array de 20.000 595 00:21:46,910 --> 00:21:48,789 menudo coñazo, aunque tú 596 00:21:48,789 --> 00:21:50,930 no lo notes, porque tú haces add, remove y ya está 597 00:21:50,930 --> 00:21:52,730 aunque tú no lo notes, por debajo es muy pesado 598 00:21:52,730 --> 00:21:54,990 no harías un ArrayList con 20.000 599 00:21:54,990 --> 00:21:56,589 usuarios, harías un link 600 00:21:56,589 --> 00:21:57,470 harías esto 601 00:21:57,470 --> 00:21:59,490 harías esto que es 602 00:21:59,490 --> 00:22:01,390 infinitamente más eficiente 603 00:22:01,390 --> 00:22:02,609 cada vez que llega uno y se va 604 00:22:02,609 --> 00:22:03,490 es facilísimo 605 00:22:03,490 --> 00:22:09,630 hay más estructuras de datos 606 00:22:09,630 --> 00:22:11,309 en programación que se han pensado 607 00:22:11,309 --> 00:22:13,430 para facilitar precisamente 608 00:22:13,430 --> 00:22:15,849 un uso eficiente 609 00:22:15,849 --> 00:22:17,269 de los datos 610 00:22:17,269 --> 00:22:18,609 hay una 611 00:22:18,609 --> 00:22:21,490 que esa ya sí que no la vamos a programar nosotros 612 00:22:21,490 --> 00:22:22,269 porque es un poco 613 00:22:22,269 --> 00:22:24,309 lío 614 00:22:24,309 --> 00:22:27,529 la vamos a usar sin más 615 00:22:27,529 --> 00:22:28,809 sin programarla nosotros 616 00:22:28,809 --> 00:22:31,029 la vamos a usar sin más, pero tenéis que conocerla 617 00:22:31,029 --> 00:22:32,970 tenéis que conocer que es si esta 618 00:22:32,970 --> 00:22:34,130 es la lista enlazada 619 00:22:34,130 --> 00:22:36,890 lista enlazada ya os tiene que sonar a partir de ahora 620 00:22:36,890 --> 00:22:38,869 grabado como tantas cosas que es una lista 621 00:22:38,869 --> 00:22:41,289 enlazada, pues es una estructura 622 00:22:41,289 --> 00:22:42,569 de almacenamiento de datos 623 00:22:42,569 --> 00:22:44,769 en programación, donde cada dato 624 00:22:44,769 --> 00:22:46,410 tiene la dirección del siguiente 625 00:22:46,410 --> 00:22:48,970 la tiene dentro, con lo cual 626 00:22:48,970 --> 00:22:50,869 con tener la dirección del primero es suficiente 627 00:22:50,869 --> 00:22:52,970 con la del primero es suficiente 628 00:22:52,970 --> 00:22:55,150 porque ya cada uno de ellos te va a dar la del siguiente 629 00:22:55,150 --> 00:22:56,349 esa es la lista enlazada, eso ya 630 00:22:56,349 --> 00:22:58,150 que no se os olvide, una estructura 631 00:22:58,150 --> 00:23:00,190 de datos que se puede programar en cualquier lenguaje 632 00:23:00,190 --> 00:23:02,230 de programación, bueno pues otra estructura 633 00:23:02,230 --> 00:23:02,750 de datos 634 00:23:02,750 --> 00:23:04,829 es el árbol 635 00:23:04,829 --> 00:23:07,230 el árbol binario 636 00:23:07,230 --> 00:23:11,599 en esta estructura de datos 637 00:23:11,599 --> 00:23:13,700 los datos no se guardan en una listita 638 00:23:13,700 --> 00:23:14,880 en otros datos de la mano 639 00:23:14,880 --> 00:23:17,619 se guardan así 640 00:23:17,619 --> 00:23:21,059 cada dato tiene 641 00:23:21,059 --> 00:23:24,279 su valor, el nombre del cliente 642 00:23:24,279 --> 00:23:25,240 lo que sea, su valor 643 00:23:25,240 --> 00:23:27,960 y luego además tiene la dirección 644 00:23:27,960 --> 00:23:30,480 del que está a su derecha 645 00:23:30,480 --> 00:23:32,420 y la dirección del que está 646 00:23:32,420 --> 00:23:34,400 a su izquierda. Tiene dos direcciones 647 00:23:34,400 --> 00:23:35,079 metidas dentro. 648 00:23:36,039 --> 00:23:37,200 Este tendrá su dato, 649 00:23:38,119 --> 00:23:40,099 ese es el binario, pero vamos, podría haber árboles 650 00:23:40,099 --> 00:23:41,700 no binarios, pero eso ya sí que no 651 00:23:41,700 --> 00:23:44,019 tiene demasiada complejidad. 652 00:23:46,400 --> 00:23:47,819 Este tendría su vez, 653 00:23:49,480 --> 00:23:50,380 esta es la estructura 654 00:23:50,380 --> 00:23:51,220 del árbol binario 655 00:23:51,220 --> 00:23:53,140 de toda la vida. 656 00:23:53,960 --> 00:23:56,319 ¿Qué aporta respecto a la lista enlazada? 657 00:23:56,319 --> 00:23:59,059 arregla un poquito las consultas 658 00:23:59,059 --> 00:24:01,059 hemos dicho antes que ahí está enlazada, es un rollo 659 00:24:01,059 --> 00:24:02,440 pues tienes 20.000 660 00:24:02,440 --> 00:24:05,319 y tú tienes que recuperar el 19.000 661 00:24:05,319 --> 00:24:07,299 pues tienes que 662 00:24:07,299 --> 00:24:09,359 ir avanzando de la manita 663 00:24:09,359 --> 00:24:10,880 hasta llegar al 19.000 664 00:24:10,880 --> 00:24:13,359 ¿vale? con el árbol binario 665 00:24:13,359 --> 00:24:15,240 cada vez, paz, te quitas 666 00:24:15,240 --> 00:24:16,980 la mitad de golpe, porque 667 00:24:16,980 --> 00:24:19,180 estos se van almacenando con un 668 00:24:19,180 --> 00:24:21,099 criterio de mayor a menor, aquí tienes un dato 669 00:24:21,099 --> 00:24:23,319 todos los que sean mayores que él, se ponen para acá 670 00:24:23,319 --> 00:24:24,920 y los menores para acá 671 00:24:24,920 --> 00:24:27,579 y aquí lo mismo, todos los que sean mayores que este 672 00:24:27,579 --> 00:24:28,900 para acá, los menores para acá 673 00:24:28,900 --> 00:24:31,099 entonces las búsquedas son muy fáciles 674 00:24:31,099 --> 00:24:33,539 tú buscas, vas navegando 675 00:24:33,539 --> 00:24:35,319 y de golpe ya te has quitado la mitad 676 00:24:35,319 --> 00:24:37,160 ahora te quedas aquí 677 00:24:37,160 --> 00:24:38,400 de golpe te quedas la mitad 678 00:24:38,400 --> 00:24:41,400 entonces es más fácil hacer una consulta 679 00:24:41,400 --> 00:24:42,740 en un árbol binario y llegas antes 680 00:24:42,740 --> 00:24:44,039 obviamente que en una fila 681 00:24:44,039 --> 00:24:46,839 en una fila es que tienes que recorrer la fila enterita 682 00:24:46,839 --> 00:24:49,519 en un árbol binario recorres la fila entera 683 00:24:49,519 --> 00:24:51,140 entonces lo que aporta 684 00:24:51,140 --> 00:24:51,960 esta estructura 685 00:24:51,960 --> 00:24:54,599 es que las consultas son 686 00:24:54,599 --> 00:24:56,900 más fáciles, más rápidas 687 00:24:56,900 --> 00:24:57,519 que esta 688 00:24:57,519 --> 00:25:01,000 ¿vale? pero programar esto ya sí que es 689 00:25:01,000 --> 00:25:03,180 un poquito más complicado, entonces esto sí que 690 00:25:03,180 --> 00:25:03,920 lo usaremos 691 00:25:03,920 --> 00:25:06,779 porque es una estructura que está ya programada 692 00:25:06,779 --> 00:25:09,059 en Java hay un montón de clases que son las famosas 693 00:25:09,059 --> 00:25:09,740 colecciones 694 00:25:09,740 --> 00:25:13,140 hola, busco unos alumnos 695 00:25:13,140 --> 00:25:14,440 pues tú dirás 696 00:25:14,440 --> 00:25:15,259 ¿ves pd's? 697 00:25:17,619 --> 00:25:22,009 vale, bueno pues entonces 698 00:25:22,009 --> 00:25:24,150 la 699 00:25:24,150 --> 00:25:30,839 esta estructura 700 00:25:30,839 --> 00:25:32,319 de lista enlazada 701 00:25:32,319 --> 00:25:34,500 entonces al que se le ocurrió 702 00:25:34,500 --> 00:25:36,619 que está muy bien porque 703 00:25:36,619 --> 00:25:38,720 insertar y borrar como hemos dicho 704 00:25:38,720 --> 00:25:41,019 es mucho más fácil computacionalmente 705 00:25:41,019 --> 00:25:41,579 de un array 706 00:25:41,579 --> 00:25:44,400 pues el que se le ocurrió la programó 707 00:25:44,400 --> 00:25:45,920 y ya está 708 00:25:45,920 --> 00:25:48,740 y vamos a programarla nosotros también 709 00:25:48,740 --> 00:25:50,819 porque somos muy listos y somos capaces de hacerlo 710 00:25:50,819 --> 00:25:53,039 el resto de colecciones que hay 711 00:25:53,039 --> 00:25:54,759 que ya veremos 712 00:25:54,759 --> 00:25:56,359 que hay muchas variantes luego de esto 713 00:25:56,359 --> 00:25:58,039 hay muchas variantes de listas conjuntos 714 00:25:58,039 --> 00:26:01,000 Veremos cómo se usan 715 00:26:01,000 --> 00:26:02,339 No las programaremos por dentro 716 00:26:02,339 --> 00:26:04,859 Pero esta sí, al menos una hay que programar 717 00:26:04,859 --> 00:26:06,180 Porque tenéis que aprender a programar 718 00:26:06,180 --> 00:26:08,920 Eso es lo que os van a pedir 719 00:26:08,920 --> 00:26:09,759 Que sepáis programar 720 00:26:09,759 --> 00:26:12,359 No que conozcáis la clase B y la clase C 721 00:26:12,359 --> 00:26:14,259 Sino que sepáis programar 722 00:26:14,259 --> 00:26:14,960 Es lo que os van a pedir 723 00:26:14,960 --> 00:26:18,160 Vamos a programar la lista enlazada 724 00:26:18,160 --> 00:26:22,099 Que os va a gustar mucho además 725 00:26:22,099 --> 00:26:28,000 Porque os va a hacer pensar 726 00:26:28,000 --> 00:26:30,980 Y eso es lo que más satisfacción se supone que os tiene que dar 727 00:26:30,980 --> 00:26:33,119 si os habéis matriculado en este 728 00:26:33,119 --> 00:26:35,799 ciclo, el tener la opción de pensar 729 00:26:35,799 --> 00:26:38,059 de que se os mueva la cabeza 730 00:26:38,059 --> 00:26:40,759 bueno pues 731 00:26:40,759 --> 00:26:43,339 vale, pues vamos a pensar 732 00:26:43,339 --> 00:26:45,380 nuestra lista enlazada es algo de este estilo 733 00:26:45,380 --> 00:26:47,039 aquí habrá una referencia 734 00:26:47,039 --> 00:26:49,619 vamos a llamarle inicio 735 00:26:49,619 --> 00:26:51,119 por llamarle de alguna manera 736 00:26:51,119 --> 00:26:55,700 y esta será la dirección 737 00:26:55,700 --> 00:26:58,220 del primer objeto 738 00:26:58,220 --> 00:26:59,720 del primer objeto 739 00:26:59,720 --> 00:27:00,359 de la lista 740 00:27:00,359 --> 00:27:18,940 Este objeto tendrá su dato y ahora aquí tendrá también otra propiedad, otra propiedad, esta propiedad será la dirección del siguiente de la lista, ¿vale? 741 00:27:18,940 --> 00:27:40,240 Vamos a dejar, aquí tendrá su dato, vale, pues entonces lo primero que vamos a programar, vamos a programar estas clases, es decir, cada uno de estos objetos, cada uno de estos objetos pertenecerá a una clase, ¿verdad?, pertenecerá a una clase, cada uno de estos objetos va a pertenecer a una clase, vale. 742 00:27:40,240 --> 00:27:42,339 vamos a darle nombre a esa clase 743 00:27:42,339 --> 00:27:43,299 para programarla 744 00:27:43,299 --> 00:27:46,740 bueno, el término habitual en informática 745 00:27:46,740 --> 00:27:48,900 para los árboles 746 00:27:48,900 --> 00:27:50,000 para las listas 747 00:27:50,000 --> 00:27:52,200 es que esto se le llame nodos 748 00:27:52,200 --> 00:27:54,339 es un nodo de una lista 749 00:27:54,339 --> 00:27:55,960 un nodo de un árbol 750 00:27:55,960 --> 00:27:59,140 bueno, pues para acostumbrarnos a esa terminología 751 00:27:59,140 --> 00:28:00,779 la clase a la que 752 00:28:00,779 --> 00:28:02,700 pertenecen estos objetos 753 00:28:02,700 --> 00:28:04,099 de la lista, vamos a llamarle 754 00:28:04,099 --> 00:28:05,220 nodo 755 00:28:05,220 --> 00:28:08,339 vamos a programar esa clase lo primero de todo 756 00:28:08,339 --> 00:28:15,700 clase nodo 757 00:28:15,700 --> 00:28:34,549 Vale, la clase nodo tiene dos campos, tiene dos campos obligatoriamente, uno, el campo que tiene el dato en sí que guarde la lista, lo que sea, cliente, cadena de datos, número, lo que sea, el dato en sí. 758 00:28:34,549 --> 00:28:37,049 vale, vamos a hacer 759 00:28:37,049 --> 00:28:39,329 esta lista, vamos a tener que elegir 760 00:28:39,329 --> 00:28:40,569 ahora mismo voy a tener que elegir 761 00:28:40,569 --> 00:28:43,529 ¿qué queremos que guarde esta lista? 762 00:28:43,630 --> 00:28:45,130 vamos a hacer, vamos a programar 763 00:28:45,130 --> 00:28:46,869 esta lista enlazada para que guarde 764 00:28:46,869 --> 00:28:49,250 cadenas, por ejemplo, para que guarde 765 00:28:49,250 --> 00:28:51,250 cadenas de texto, si queremos que 766 00:28:51,250 --> 00:28:53,450 guarde cadenas, este primer campo 767 00:28:53,450 --> 00:28:55,009 de este objeto, de los dos que tiene 768 00:28:55,009 --> 00:28:57,549 este primer campo 769 00:28:57,549 --> 00:28:58,910 será de tipo 770 00:28:58,910 --> 00:29:00,470 string, ¿verdad? 771 00:29:00,970 --> 00:29:02,390 bueno, pues el primer campo 772 00:29:02,390 --> 00:29:08,319 será de tipo string 773 00:29:08,319 --> 00:29:10,799 luego el campo 774 00:29:10,799 --> 00:29:12,720 dato, este de aquí es de tipo 775 00:29:12,720 --> 00:29:13,680 string, es donde está el dato 776 00:29:13,680 --> 00:29:16,559 recordad que esta estructura es para guardar datos 777 00:29:16,559 --> 00:29:17,859 no es para otra cosa 778 00:29:17,859 --> 00:29:20,460 bueno, pues ese era el primer 779 00:29:20,460 --> 00:29:22,420 campo de este objeto 780 00:29:22,420 --> 00:29:26,339 pero vamos, que si quisiéramos que aquí 781 00:29:26,339 --> 00:29:27,720 guardara un objeto cliente 782 00:29:27,720 --> 00:29:29,480 pues aquí pondríamos cliente 783 00:29:29,480 --> 00:29:31,680 si es que tuviéramos esa clase cliente hecha 784 00:29:31,680 --> 00:29:33,559 si quisiéramos que guardara un número 785 00:29:33,559 --> 00:29:35,059 aquí pondríamos int 786 00:29:35,059 --> 00:29:38,160 eso depende de lo que queramos que guarde nuestra lista 787 00:29:38,160 --> 00:29:38,819 es como el array 788 00:29:38,819 --> 00:29:42,759 vale 789 00:29:42,759 --> 00:29:44,819 pero tiene que tener 790 00:29:44,819 --> 00:29:47,359 este objeto, tiene que pertenecer a una clase 791 00:29:47,359 --> 00:29:48,400 nuestra clase nodo 792 00:29:48,400 --> 00:29:50,099 que además tenga un segundo campo 793 00:29:50,099 --> 00:29:53,599 porque ya hemos dicho que cada objeto 794 00:29:53,599 --> 00:29:55,460 de la lista tiene que apuntar 795 00:29:55,460 --> 00:29:56,000 a su siguiente 796 00:29:56,000 --> 00:29:59,599 vale, pues a este campo le vamos a llamar 797 00:29:59,599 --> 00:30:00,640 así, siguiente 798 00:30:00,640 --> 00:30:03,680 y ahora la pregunta 799 00:30:03,680 --> 00:30:05,539 más importante es 800 00:30:05,539 --> 00:30:07,640 qué tipo de dato 801 00:30:07,640 --> 00:30:09,200 tiene este campo 802 00:30:09,200 --> 00:30:12,990 qué tipo de dato tiene ese campo 803 00:30:12,990 --> 00:30:14,430 qué tipo de dato pongo aquí 804 00:30:14,430 --> 00:30:19,819 este tiene que ser 805 00:30:19,819 --> 00:30:21,440 una referencia 806 00:30:21,440 --> 00:30:24,319 la dirección del siguiente objeto 807 00:30:24,319 --> 00:30:24,980 de la lista 808 00:30:24,980 --> 00:30:28,259 la referencia, su dirección de memoria, el siguiente objeto de la lista 809 00:30:28,259 --> 00:30:30,380 luego, qué tipo de dato 810 00:30:30,380 --> 00:30:30,980 pongo ahí 811 00:30:30,980 --> 00:30:34,460 nodo, perfectamente, muy bien 812 00:30:34,460 --> 00:30:34,779 claro 813 00:30:34,779 --> 00:30:41,890 ¿vale? 814 00:30:42,450 --> 00:30:44,490 esto es un objeto 815 00:30:44,490 --> 00:30:46,670 de tipo nodo, es la dirección del siguiente elemento 816 00:30:46,670 --> 00:30:48,190 que es de esta clase 817 00:30:48,190 --> 00:30:54,170 que es de esta, de esta, la misma toda, el nodo 818 00:30:54,170 --> 00:30:56,309 ¿vale? luego esta clase a la que pertenecen 819 00:30:56,309 --> 00:30:56,789 mis datos 820 00:30:56,789 --> 00:31:00,170 tiene esos dos campos 821 00:31:00,170 --> 00:31:01,250 esos dos campos 822 00:31:01,250 --> 00:31:09,789 ¿vale? luego aquí ya, pues le puedo 823 00:31:09,789 --> 00:31:12,109 poner el constructor, métodos 824 00:31:12,109 --> 00:31:13,309 para acceder a 825 00:31:13,309 --> 00:31:15,670 a esto de aquí, etcétera, pero bueno 826 00:31:15,670 --> 00:31:17,670 eso ya, ahora mismo, get y sell 827 00:31:17,670 --> 00:31:18,950 me refiero a eso ya ahora mismo, es lo de menos 828 00:31:18,950 --> 00:31:21,710 ¿cómo accedo yo a esto? si accedo con el punto, le pongo 829 00:31:21,710 --> 00:31:23,490 eso nos da igual a la misma 830 00:31:23,490 --> 00:31:25,910 lo que nos importa es la estructura 831 00:31:25,910 --> 00:31:26,569 de este objeto 832 00:31:26,569 --> 00:31:28,930 ¿nodo es el primer objeto que has creado? 833 00:31:30,029 --> 00:31:31,750 no, nodo es la clase a la que 834 00:31:31,750 --> 00:31:33,890 pertenecen todos y cada uno de estos objetos 835 00:31:33,890 --> 00:31:35,230 o sea, inicio 836 00:31:35,230 --> 00:31:37,609 no, inicio es 837 00:31:37,609 --> 00:31:40,029 como he llamado yo a la referencia 838 00:31:40,029 --> 00:31:41,769 del primero de ellos, luego inicio es un 839 00:31:41,769 --> 00:31:43,970 objeto de clase nodo 840 00:31:43,970 --> 00:31:45,829 ¿vale? inicio es un objeto 841 00:31:45,829 --> 00:31:47,170 de clase nodo, pero solo uno 842 00:31:47,170 --> 00:31:49,970 porque la dirección es el primero, esta es la clase 843 00:31:49,970 --> 00:31:52,210 la clase a la que pertenecen todos 844 00:31:52,210 --> 00:31:53,349 ¿vale? 845 00:31:54,410 --> 00:31:55,990 bueno, ya tenemos hecha una parte 846 00:31:55,990 --> 00:31:58,950 pero claro, aquí lo que queremos es 847 00:31:58,950 --> 00:32:00,769 aquí lo que queremos 848 00:32:00,769 --> 00:32:02,549 es un objeto 849 00:32:02,549 --> 00:32:05,230 un objeto que pertenezca a una clase 850 00:32:05,230 --> 00:32:07,329 que me permita a mí 851 00:32:07,329 --> 00:32:08,710 hacer las operaciones 852 00:32:08,710 --> 00:32:10,529 de añadir, de eliminar 853 00:32:10,529 --> 00:32:11,450 de todo eso 854 00:32:11,450 --> 00:32:14,809 ¿vale? eso es lo que yo necesito 855 00:32:14,809 --> 00:32:16,130 bueno, pues 856 00:32:16,130 --> 00:32:18,829 ese objeto, mi objeto de partida 857 00:32:18,829 --> 00:32:21,210 mi objeto de partida, el objeto que vamos a usar 858 00:32:21,210 --> 00:32:22,910 para insertar, eliminar, para todo 859 00:32:22,910 --> 00:32:24,150 mi objeto de partida es este 860 00:32:24,150 --> 00:32:26,509 es este 861 00:32:26,509 --> 00:32:29,250 que pertenece a la clase 862 00:32:29,250 --> 00:32:30,309 nodo también, ¿verdad? 863 00:32:31,890 --> 00:32:33,190 vale, pues entonces nuestra 864 00:32:33,190 --> 00:32:35,250 estructura de datos, la que ya 865 00:32:35,250 --> 00:32:37,109 vamos a instanciar para trabajar, nuestra 866 00:32:37,109 --> 00:32:37,970 estructura de datos 867 00:32:37,970 --> 00:32:40,029 vamos a llamarla 868 00:32:40,029 --> 00:32:43,599 lista enlazada 869 00:32:43,599 --> 00:32:54,859 ¿vale? esta es la 870 00:32:54,859 --> 00:32:56,160 estructura de datos que vamos a crear 871 00:32:56,160 --> 00:32:57,740 Se llama lista enlazada 872 00:32:57,740 --> 00:32:59,380 Y aquí es donde vamos a meter los métodos 873 00:32:59,380 --> 00:33:01,660 Relacionados con 874 00:33:01,660 --> 00:33:03,220 Meter en la lista, sacar 875 00:33:03,220 --> 00:33:04,599 ¿Vale? En esta clase 876 00:33:04,599 --> 00:33:06,700 Es donde vamos a meter toda la operativa 877 00:33:06,700 --> 00:33:09,579 De insertar, borrar, consultar 878 00:33:09,579 --> 00:33:09,940 Todo 879 00:33:09,940 --> 00:33:13,420 Va a estar metido en esa clase 880 00:33:13,420 --> 00:33:15,400 Ahí va a estar toda la operativa, lista enlazada 881 00:33:15,400 --> 00:33:17,160 Vale, aquí meteremos, pues repito 882 00:33:17,160 --> 00:33:19,500 Añaden la lista, borra de la lista, etc 883 00:33:19,500 --> 00:33:22,000 Bueno, pues esta lista enlazada 884 00:33:22,000 --> 00:33:24,500 ¿Por qué se va a caracterizar? 885 00:33:24,619 --> 00:33:25,640 ¿Cuál va a ser su dato 886 00:33:25,640 --> 00:33:26,740 más importante. 887 00:33:27,279 --> 00:33:28,819 ¿Cuál va a ser su dato más importante? 888 00:33:30,779 --> 00:33:31,819 La dirección del primero. 889 00:33:33,579 --> 00:33:35,019 Y con la dirección del primero 890 00:33:35,019 --> 00:33:35,660 ya lo tiene todo. 891 00:33:36,539 --> 00:33:39,119 Porque las direcciones de los siguientes están aquí dentro. 892 00:33:39,380 --> 00:33:40,039 Lo acabamos de ver. 893 00:33:40,819 --> 00:33:42,880 Con lo cual, mi estructura lista enlazada, 894 00:33:43,900 --> 00:33:45,599 la única propiedad 895 00:33:45,599 --> 00:33:46,319 que necesita, 896 00:33:46,880 --> 00:33:48,779 lo único que la caracteriza, lo único que importa, 897 00:33:48,880 --> 00:33:49,920 es la dirección del primero. 898 00:33:50,519 --> 00:33:52,359 Lo único. La dirección del primero. 899 00:33:53,259 --> 00:33:54,880 Porque a partir del primero yo puedo 900 00:33:54,880 --> 00:33:55,500 llegar a los otros. 901 00:33:57,079 --> 00:34:05,740 Luego, esta propiedad de inicio, que es la dirección del primero, es la que caracteriza a una lista enlazada concreta. 902 00:34:06,680 --> 00:34:12,219 Esta es la clase lista enlazada, y luego cada lista enlazada concreta, cada objeto de esta, 903 00:34:12,280 --> 00:34:17,940 cada objeto de esta se distinguirán unos de otros de su inicio. 904 00:34:18,400 --> 00:34:24,920 Luego, inicio será la propiedad que caracteriza a cada lista enlazada concreta, cada lista enlazada, su dirección de inicio. 905 00:34:24,920 --> 00:34:26,460 y ahora repito 906 00:34:26,460 --> 00:34:28,460 esta propiedad 907 00:34:28,460 --> 00:34:30,199 inicio, el inicio de mi lista 908 00:34:30,199 --> 00:34:32,460 lo único que me hace a mi falta 909 00:34:32,460 --> 00:34:33,800 para trabajar con la lista 910 00:34:33,800 --> 00:34:36,119 esta propiedad, ¿de qué tipo la pondremos? 911 00:34:41,519 --> 00:34:42,719 ¿nodo? ¿de tipo nodo? claro 912 00:34:42,719 --> 00:34:44,980 porque es la dirección del primero 913 00:34:44,980 --> 00:34:47,480 y el primero es un objeto nodo 914 00:34:47,480 --> 00:34:48,980 todos son un objeto nodo 915 00:34:48,980 --> 00:34:50,599 luego esta era de tipo nodo 916 00:34:50,599 --> 00:34:52,239 porque es la dirección de un objeto nodo 917 00:34:52,239 --> 00:34:54,360 y esta también es de tipo nodo 918 00:34:54,360 --> 00:35:01,369 porque es la dirección de un objeto nodo 919 00:35:01,369 --> 00:35:02,789 luego esto en realidad 920 00:35:02,789 --> 00:35:05,530 es las únicas 921 00:35:05,530 --> 00:35:07,650 dos clases, no le hemos metido a operativa 922 00:35:07,650 --> 00:35:09,690 de insertar y de todo eso, son las únicas 923 00:35:09,690 --> 00:35:11,469 dos clases necesarias para 924 00:35:11,469 --> 00:35:13,690 pintar, dibujar, reflejar 925 00:35:13,690 --> 00:35:14,530 la lista enlazada 926 00:35:14,530 --> 00:35:17,590 es decir, la lista enlazada es una 927 00:35:17,590 --> 00:35:19,250 estructura como esta 928 00:35:19,250 --> 00:35:21,829 que se caracteriza 929 00:35:21,829 --> 00:35:22,210 ¿por qué? 930 00:35:23,670 --> 00:35:25,809 por la dirección del primero, ya está 931 00:35:25,809 --> 00:35:27,869 porque con la dirección del primero llego a todo 932 00:35:27,869 --> 00:35:28,449 vale 933 00:35:28,449 --> 00:35:31,690 pues yo tengo mi clase lista enlazada 934 00:35:31,690 --> 00:35:34,409 que se caracteriza exclusivamente 935 00:35:34,409 --> 00:35:35,510 por la dirección del primero 936 00:35:35,510 --> 00:35:38,969 y ahora ya la dirección del primero 937 00:35:38,969 --> 00:35:39,730 es de tipo nodo 938 00:35:39,730 --> 00:35:42,269 pues claro, tendré que programar la clase nodo 939 00:35:42,269 --> 00:35:44,389 obviamente, tendré que programar la clase nodo 940 00:35:44,389 --> 00:35:46,110 si la dirección del primero es de tipo nodo 941 00:35:46,110 --> 00:35:47,730 tendré que decir, vale 942 00:35:47,730 --> 00:35:49,510 ¿y cada nodo qué tiene dentro? 943 00:35:50,170 --> 00:35:51,190 pues lo estoy diciendo aquí 944 00:35:51,190 --> 00:35:54,289 cada nodo tiene dentro un dato 945 00:35:54,289 --> 00:35:56,210 y la dirección del siguiente 946 00:35:56,210 --> 00:36:00,210 vale, luego esto ya es la descripción de la lista 947 00:36:00,210 --> 00:36:02,650 esto describe completamente lo que es una lista enlazada 948 00:36:02,650 --> 00:36:03,230 lo describe 949 00:36:03,230 --> 00:36:06,269 ahora ya para poder usar 950 00:36:06,269 --> 00:36:08,349 una lista enlazada para meter datos 951 00:36:08,349 --> 00:36:09,769 sacar, consultar, etc 952 00:36:09,769 --> 00:36:12,730 habrá que meter aquí los métodos correspondientes 953 00:36:12,730 --> 00:36:14,150 por ejemplo 954 00:36:14,150 --> 00:36:15,989 en este objeto lista enlazada 955 00:36:15,989 --> 00:36:18,449 que se caracteriza por esta dirección 956 00:36:18,449 --> 00:36:19,989 de inicio, sea la que sea 957 00:36:19,989 --> 00:36:22,710 cada lista tendrá una suya 958 00:36:22,710 --> 00:36:25,489 ¿qué método me interesará 959 00:36:25,489 --> 00:36:26,010 a mi programa? 960 00:36:26,869 --> 00:36:28,210 pues el método añadir 961 00:36:28,210 --> 00:36:30,050 al que yo le paso 962 00:36:30,050 --> 00:36:32,150 un string, porque en este caso 963 00:36:32,150 --> 00:36:33,389 si es una lista enlazada de strings 964 00:36:33,389 --> 00:36:35,190 le paso un string 965 00:36:35,190 --> 00:36:38,289 y me lo añade 966 00:36:38,289 --> 00:36:40,190 a la lista, ala, pues este método 967 00:36:40,190 --> 00:36:42,250 querremos programarle, un método 968 00:36:42,250 --> 00:36:44,090 add, al que yo le paso un string 969 00:36:44,090 --> 00:36:46,369 y me lo mete en la lista 970 00:36:46,369 --> 00:36:48,170 ¿vale? 971 00:36:48,849 --> 00:36:50,170 ya este método tendrá que 972 00:36:50,170 --> 00:36:51,869 encargarse de crear el dato 973 00:36:51,869 --> 00:36:54,389 colocarlo, hacer los enlaces 974 00:36:54,389 --> 00:36:56,269 etcétera, ¿qué más métodos 975 00:36:56,269 --> 00:36:58,210 nos interesa programar aquí en esta lista? 976 00:36:58,710 --> 00:36:59,869 pues en esta lista 977 00:36:59,869 --> 00:37:01,829 cuya dirección de inicio es esta 978 00:37:01,829 --> 00:37:03,369 cada una tendrá la suya 979 00:37:03,369 --> 00:37:06,150 recordad que eso es una clase, luego ya habrá listas concretas 980 00:37:06,150 --> 00:37:08,630 y cada lista concreta tendrá su propia dirección 981 00:37:08,630 --> 00:37:10,210 pues en esta lista 982 00:37:10,210 --> 00:37:11,789 cuya dirección de inicio es esta 983 00:37:11,789 --> 00:37:14,090 también me interesa programar 984 00:37:14,090 --> 00:37:16,030 un método remove 985 00:37:16,030 --> 00:37:16,710 por ejemplo 986 00:37:16,710 --> 00:37:19,369 al que yo le paso un string 987 00:37:19,369 --> 00:37:22,369 y me elimina 988 00:37:22,369 --> 00:37:24,369 el método, me elimina el nodo 989 00:37:24,369 --> 00:37:26,210 que contenga este dato 990 00:37:26,210 --> 00:37:27,050 por ejemplo 991 00:37:27,050 --> 00:37:28,989 y así podemos añadir 992 00:37:28,989 --> 00:37:30,250 un montón de métodos 993 00:37:30,250 --> 00:37:31,449 el recuperar, ¿qué? 994 00:37:32,670 --> 00:37:34,130 pues yo le paso una posición 995 00:37:34,130 --> 00:37:37,590 y me lo recupera 996 00:37:37,590 --> 00:37:38,789 ¿vale? 997 00:37:38,869 --> 00:37:40,690 pues se trata de programar estos métodos 998 00:37:40,690 --> 00:37:42,489 que son más sencillos de lo que parecen 999 00:37:42,489 --> 00:37:44,570 y esto es una lista enlazada 1000 00:37:44,570 --> 00:37:49,679 ¿vale? 1001 00:37:49,679 --> 00:37:50,960 que son las dos 1002 00:37:50,960 --> 00:37:53,300 los únicos dos tipos de listas que hay 1003 00:37:53,300 --> 00:37:54,159 en Java 1004 00:37:54,159 --> 00:37:56,460 la lista basada en Array 1005 00:37:56,460 --> 00:37:59,000 y la lista basada en lista enlazada 1006 00:37:59,000 --> 00:38:05,320 Venga, vamos a parar aquí un momento, luego ya lo programamos y...