1 00:00:00,000 --> 00:00:03,259 vale, pues antes de 2 00:00:03,259 --> 00:00:07,179 silencio 3 00:00:07,179 --> 00:00:09,099 a ver, antes de 4 00:00:09,099 --> 00:00:10,800 pasar a conjuntos 5 00:00:10,800 --> 00:00:12,960 pues bueno 6 00:00:12,960 --> 00:00:15,039 por completitud, no porque os perdáis 7 00:00:15,039 --> 00:00:16,960 ni os volváis locos en esto, vos tampoco os volváis 8 00:00:16,960 --> 00:00:18,559 locos con ninguna otra cosa, pero bueno 9 00:00:18,559 --> 00:00:19,320 con esto menos 10 00:00:19,320 --> 00:00:22,559 vamos a completar un poquito 11 00:00:22,559 --> 00:00:23,960 de listas 12 00:00:23,960 --> 00:00:26,559 para que no parezca que ni lo hemos mencionado 13 00:00:26,559 --> 00:00:28,120 pero insisto, no quiero que 14 00:00:28,120 --> 00:00:30,059 os volváis locos 15 00:00:30,059 --> 00:00:46,020 A ver, cuando hemos visto la jerarquía de Collection, venga, ¿alguien me está haciendo caso? 16 00:00:46,020 --> 00:00:51,100 que está pausado 17 00:00:51,100 --> 00:00:53,439 como nuestros cerebros 18 00:00:53,439 --> 00:00:59,399 que podemos esperar 19 00:00:59,399 --> 00:01:03,299 yo creo que Miguel, como Miguel es el que se echa 20 00:01:03,299 --> 00:01:05,680 las siestas, luego lo está súper despejado 21 00:01:05,680 --> 00:01:06,859 llega a la una y media 22 00:01:06,859 --> 00:01:09,400 pero se ha estado dos cabezadas 23 00:01:09,400 --> 00:01:09,780 antes 24 00:01:09,780 --> 00:01:13,579 bueno, llamémosle 25 00:01:13,579 --> 00:01:14,200 me apago 26 00:01:17,400 --> 00:01:19,739 Aunque estés dormido 27 00:01:19,739 --> 00:01:21,459 Sí, sí, sí 28 00:01:21,459 --> 00:01:23,959 Yo eso lo he visto en algunas series de estas de Netflix 29 00:01:23,959 --> 00:01:32,620 Bueno, a ver, o parálisis del... 30 00:01:32,620 --> 00:01:35,079 No, porque el que le dan arcolepsia no procesa 31 00:01:35,079 --> 00:01:36,840 Hay otra cosa que se llama parálisis del sueño 32 00:01:36,840 --> 00:01:39,140 Que él cree que procesa 33 00:01:39,140 --> 00:01:40,420 Pero luego no sabe de lo que estamos hablando 34 00:01:40,420 --> 00:01:42,000 Pero... 35 00:01:42,000 --> 00:01:42,739 ¿Qué? 36 00:01:45,879 --> 00:01:47,200 No, parálisis del sueño 37 00:01:47,200 --> 00:01:47,840 Es otra cosa 38 00:01:47,840 --> 00:01:51,780 que en esa estás dormido 39 00:01:51,780 --> 00:01:53,700 pero te estás enterando de lo que ocurre 40 00:01:53,700 --> 00:01:53,920 no 41 00:01:53,920 --> 00:01:56,799 está pasando algo por ahí 42 00:01:56,799 --> 00:01:58,500 como que no, si yo me entero de lo que dice 43 00:01:58,500 --> 00:02:02,599 bueno, la próxima vez que te da una cabezada 44 00:02:02,599 --> 00:02:03,959 te voy a preguntar, a ver si es verdad 45 00:02:03,959 --> 00:02:06,159 que te enteras de lo que dices 46 00:02:06,159 --> 00:02:12,199 a ver 47 00:02:12,199 --> 00:02:23,939 Pues que esto es tan grande 48 00:02:23,939 --> 00:02:24,539 Que tela 49 00:02:42,669 --> 00:02:43,710 Pues que 50 00:02:43,710 --> 00:02:48,069 Bueno, y encima se 51 00:02:48,069 --> 00:02:52,090 Se me cuelga el ordenador 52 00:02:52,090 --> 00:02:54,830 Ah, aquí, vale, vale 53 00:02:54,830 --> 00:03:01,810 Vale, esta me vale, por ejemplo 54 00:03:01,810 --> 00:03:03,349 Vale 55 00:03:13,180 --> 00:03:14,259 A ver, venga 56 00:03:14,259 --> 00:03:33,379 Bueno, venga 57 00:03:33,379 --> 00:03:37,219 a ver, cuando veíamos la jerarquía 58 00:03:37,219 --> 00:03:38,000 de colección 59 00:03:38,000 --> 00:03:41,020 recordad que 60 00:03:41,020 --> 00:03:43,300 para manejar volúmenes de datos 61 00:03:43,300 --> 00:03:47,240 pues como el array es un poquito engorroso de manejar 62 00:03:47,240 --> 00:03:50,120 alguien decidió ponerse a hacer clases 63 00:03:50,120 --> 00:03:52,620 basadas en lo que hay 64 00:03:52,620 --> 00:03:54,840 que es que son objetos y arrays, no hay más 65 00:03:54,840 --> 00:03:58,860 alguien decidió hacer clases para permitirnos de forma sencilla 66 00:03:58,860 --> 00:04:01,759 guardar un montón de cosas bajo una misma referencia 67 00:04:01,759 --> 00:04:04,740 y todo ese mogollón de clases lo organizó en una jerarquía 68 00:04:04,740 --> 00:04:07,340 para que fuera más o menos organizado 69 00:04:07,340 --> 00:04:11,139 entonces, para eso estaba la interfaz iterable 70 00:04:11,139 --> 00:04:13,360 que lo único que dice es el que implemente iterable 71 00:04:13,360 --> 00:04:15,500 tiene que ofrecer métodos para poder 72 00:04:15,500 --> 00:04:17,180 ser iterado, vale 73 00:04:17,180 --> 00:04:18,519 luego collection 74 00:04:18,519 --> 00:04:21,839 que a su vez implemente iterable, el que implemente 75 00:04:21,839 --> 00:04:23,480 collection tiene que 76 00:04:23,480 --> 00:04:25,560 ofrecer métodos para poder hacer add 77 00:04:25,560 --> 00:04:27,660 remove 78 00:04:27,660 --> 00:04:29,040 etcétera, entonces 79 00:04:29,040 --> 00:04:31,579 el que implemente collection tiene que implementar 80 00:04:31,579 --> 00:04:33,899 lo de add, remove y además lo de iterar 81 00:04:33,899 --> 00:04:35,680 vale, entonces a partir de aquí 82 00:04:35,680 --> 00:04:37,860 ya se dijo, venga, dos filosofías de trabajo 83 00:04:37,860 --> 00:04:39,600 las listas 84 00:04:39,600 --> 00:04:41,620 en las cuales la posición no nos importa 85 00:04:41,620 --> 00:04:43,680 y los conjuntos 86 00:04:43,680 --> 00:04:45,899 en los cuales la posición no nos importa. 87 00:04:46,839 --> 00:04:47,500 Con lo cual, 88 00:04:47,980 --> 00:04:49,819 al no registrar 89 00:04:49,819 --> 00:04:51,620 la posición, no podemos meter dos 90 00:04:51,620 --> 00:04:54,000 elementos iguales, porque no se podrían distinguir. 91 00:04:54,100 --> 00:04:55,600 Estarían navegando los dos en el conjunto. 92 00:04:56,360 --> 00:04:57,120 Vale, list y set. 93 00:04:57,620 --> 00:04:59,540 Una vez separadas las dos filosofías, 94 00:05:00,240 --> 00:05:01,139 list, como, 95 00:05:01,519 --> 00:05:03,500 venga, pues la voy a hacer con un array y la voy a hacer con 96 00:05:03,500 --> 00:05:04,779 lista enlazada. Pues, hala. 97 00:05:05,939 --> 00:05:07,699 Ya dos implementaciones concretas. 98 00:05:07,699 --> 00:05:09,779 ArrayList y LinkedList 99 00:05:09,779 --> 00:05:11,720 ¿Vale? Y estas son dos 100 00:05:11,720 --> 00:05:13,860 Muy antiguas, que eran las originales 101 00:05:13,860 --> 00:05:15,839 Cuando no había ni tipo de marametrizados 102 00:05:15,839 --> 00:05:17,920 Ni nada, las primeras clases 103 00:05:17,920 --> 00:05:19,839 Que se hicieron para guardar 104 00:05:19,839 --> 00:05:21,319 De golpe muchos datos, pero 105 00:05:21,319 --> 00:05:23,839 Se mantienen de alguna manera 106 00:05:23,839 --> 00:05:25,839 Por compatibilidad 107 00:05:25,839 --> 00:05:28,300 Son código legado, de eso que se llama 108 00:05:28,300 --> 00:05:29,139 Código 109 00:05:29,139 --> 00:05:31,540 Cuando pone Legacy Code 110 00:05:31,540 --> 00:05:34,240 Código legado, significa, bueno, lo seguimos teniendo 111 00:05:34,240 --> 00:05:36,139 Pues porque nos da pena echarlo 112 00:05:36,139 --> 00:05:40,120 No vaya a ser que haya alguien que no haya querido migrar sus aplicaciones. 113 00:05:40,920 --> 00:05:42,560 Pues esas dos forman parte de eso. 114 00:05:44,040 --> 00:05:51,139 Y luego, de la filosofía de conjuntos, pues hay estas tres implementaciones. 115 00:05:51,680 --> 00:05:52,699 Esta, esta y esta. 116 00:05:53,379 --> 00:05:55,339 Que son un poquito las que veremos cómo se usan. 117 00:05:55,620 --> 00:06:01,220 Y luego están estas cosas de Q, en las que aparece la palabra Q por ahí, 118 00:06:01,339 --> 00:06:03,779 que es la interfaz Q, que como bien sabéis es cola, 119 00:06:03,779 --> 00:06:05,620 que tiene una implementación 120 00:06:05,620 --> 00:06:07,379 que es cola con prioridad, que es esta 121 00:06:07,379 --> 00:06:09,399 y luego 122 00:06:09,399 --> 00:06:11,459 a su vez está esta 123 00:06:11,459 --> 00:06:13,620 interfaz que se implementa 124 00:06:13,620 --> 00:06:15,519 o con linked list o con array 125 00:06:15,519 --> 00:06:17,259 o con array de aquí, con estas 126 00:06:17,259 --> 00:06:19,199 entonces, ¿qué es eso? eso es una tontería 127 00:06:19,199 --> 00:06:21,420 eso es una chorrada, bueno, no merece la pena 128 00:06:21,420 --> 00:06:23,220 perderse mucho en ello, pero a ver 129 00:06:23,220 --> 00:06:24,560 que nos suene y que sepamos de qué es 130 00:06:24,560 --> 00:06:27,379 en algún momento cuando empezamos lo de colecciones 131 00:06:27,379 --> 00:06:28,660 y listas dijimos que 132 00:06:28,660 --> 00:06:31,060 hay estructuras 133 00:06:31,060 --> 00:06:33,240 conceptos que se han manejado siempre para guardar 134 00:06:33,240 --> 00:06:35,259 datos, uno por ejemplo 135 00:06:35,259 --> 00:06:36,199 es el de la pila 136 00:06:36,199 --> 00:06:38,240 y otro es el de la cola 137 00:06:38,240 --> 00:06:41,339 entonces una pila, en cualquier 138 00:06:41,339 --> 00:06:43,160 contexto informático ya sabéis lo que es 139 00:06:43,160 --> 00:06:45,300 una pila es un almacén de datos, eso es una pila 140 00:06:45,300 --> 00:06:47,000 un almacén de datos, pero 141 00:06:47,000 --> 00:06:48,980 un almacén de datos 142 00:06:48,980 --> 00:06:51,540 en el cual lo único que se puede hacer es 143 00:06:51,540 --> 00:06:53,180 depositar 144 00:06:53,180 --> 00:06:55,360 en la última posición, en la 145 00:06:55,360 --> 00:06:57,279 cima, con lo cual solo 146 00:06:57,279 --> 00:06:59,079 hay una sentencia que se puede hacer con la pila 147 00:06:59,079 --> 00:07:00,959 que es PUS, la que se llama PUS 148 00:07:00,959 --> 00:07:03,060 normalmente, PUS, que es apilar 149 00:07:03,060 --> 00:07:05,220 push, ahí no hay recuperar 150 00:07:05,220 --> 00:07:07,019 por posición con get y como aquí 151 00:07:07,019 --> 00:07:09,040 en un linked list, tú recuperas la 7 152 00:07:09,040 --> 00:07:11,040 la 2, la 5, en una lista 153 00:07:11,040 --> 00:07:12,579 enlazada genérica, en una pila 154 00:07:12,579 --> 00:07:14,120 solo 155 00:07:14,120 --> 00:07:16,639 recuperas la última 156 00:07:16,639 --> 00:07:19,060 que apilaste, entonces solamente habría 157 00:07:19,060 --> 00:07:21,040 dos métodos en una pila, el que 158 00:07:21,040 --> 00:07:22,639 se llama de toda la vida push 159 00:07:22,639 --> 00:07:25,079 que es, meten la pila, o lo que es lo mismo 160 00:07:25,079 --> 00:07:27,120 apila arriba, ponen la cima 161 00:07:27,120 --> 00:07:28,660 y el pop 162 00:07:28,660 --> 00:07:30,779 que significa, sácame de la pila 163 00:07:30,779 --> 00:07:32,259 que solo puede sacarme el que está arriba 164 00:07:32,259 --> 00:07:34,680 entonces push y pop son las dos acciones 165 00:07:34,680 --> 00:07:36,639 que se hacen con una estructura tipo pila 166 00:07:36,639 --> 00:07:38,379 push es ponme arriba 167 00:07:38,379 --> 00:07:39,819 y pop es sácame el de arriba 168 00:07:39,819 --> 00:07:41,779 y los que están abajo ahí se quedan 169 00:07:41,779 --> 00:07:44,360 irán saliendo con los sucesivos pop 170 00:07:44,360 --> 00:07:45,379 claro, eso no los va haciendo 171 00:07:45,379 --> 00:07:47,879 con los sucesivos pop irán saliendo 172 00:07:47,879 --> 00:07:49,920 es una estructura de informática de toda la vida 173 00:07:49,920 --> 00:07:51,160 que 174 00:07:51,160 --> 00:07:54,660 es a la que se adaptan 175 00:07:54,660 --> 00:07:56,860 pues la gestión de procesos 176 00:07:56,860 --> 00:07:57,879 de los sistemas operativos 177 00:07:57,879 --> 00:08:00,439 según se van encolando los contadores de programa 178 00:08:00,439 --> 00:08:22,420 Pues hay muchos conceptos informáticos que se manejan con estructuras de pila. Y en esas pilas hay dos acciones, push y pull. Y luego la cola es algo muy parecido. La cola es una fila, una filita, ¿vale? Una filita donde tú vas encolando y vas sacando del otro lado. 179 00:08:22,420 --> 00:08:24,839 es un concepto en realidad 180 00:08:24,839 --> 00:08:25,939 no es más que un concepto 181 00:08:25,939 --> 00:08:27,920 pero responde a muchas situaciones reales 182 00:08:27,920 --> 00:08:30,699 en informática y en cualquier tecnología 183 00:08:30,699 --> 00:08:32,440 en cualquier disciplina tecnológica 184 00:08:32,440 --> 00:08:33,679 responde a una situación muy habitual 185 00:08:33,679 --> 00:08:36,159 tú vas encolando y vas sacando 186 00:08:36,159 --> 00:08:38,120 bueno pues 187 00:08:38,120 --> 00:08:40,799 las acciones que se hacen 188 00:08:40,799 --> 00:08:42,240 sobre las pilas y las colas 189 00:08:42,240 --> 00:08:43,779 este push, este pop que digo 190 00:08:43,779 --> 00:08:46,960 para que aparezcan 191 00:08:46,960 --> 00:08:48,539 de alguna manera reflejadas 192 00:08:48,539 --> 00:08:49,580 en la interfaz collection 193 00:08:49,580 --> 00:08:51,039 para que aparezcan reflejadas 194 00:08:51,039 --> 00:08:52,659 y que esto no las ignore, no ignore 195 00:08:52,659 --> 00:08:54,600 estas estructuras, pues 196 00:08:54,600 --> 00:08:56,659 implementan interfaces, se hacen 197 00:08:56,659 --> 00:08:58,700 interfaces que tienen esos métodos 198 00:08:58,700 --> 00:09:00,279 el push, el pop, el no sé qué 199 00:09:00,279 --> 00:09:02,480 ¿vale? Se hacen interfaces que los tienen 200 00:09:02,480 --> 00:09:04,480 y linked list 201 00:09:04,480 --> 00:09:06,580 la implementa, entonces si uno cotillea 202 00:09:06,580 --> 00:09:08,759 dentro de linked list, si uno cotillea 203 00:09:08,759 --> 00:09:12,580 como veis, array list 204 00:09:12,580 --> 00:09:13,860 array list no 205 00:09:13,860 --> 00:09:16,799 implementa esto, pero linked list 206 00:09:16,799 --> 00:09:19,019 sí, ¿por qué se ha elegido 207 00:09:19,019 --> 00:09:20,899 así? Porque recordad 208 00:09:20,899 --> 00:09:22,679 que array list es muy bueno 209 00:09:22,679 --> 00:09:24,659 para consultar, pero 210 00:09:24,659 --> 00:09:26,139 fatal para meter y sacar. 211 00:09:27,000 --> 00:09:28,559 Entonces, no tiene sentido simular 212 00:09:28,559 --> 00:09:30,419 una pila con un array, porque es una locura. 213 00:09:30,480 --> 00:09:32,419 Una pila, lo que tú estás haciendo es todo el rato 214 00:09:32,419 --> 00:09:34,419 meter y sacar. Y no consultas jamás 215 00:09:34,419 --> 00:09:36,639 en una pila. Una pila no consultas porque no puedes. 216 00:09:37,580 --> 00:09:38,779 Entonces, no tendría ningún sentido 217 00:09:38,779 --> 00:09:40,559 simular una pila con un array list. Es matar 218 00:09:40,559 --> 00:09:42,399 moscas a cañonazos. Entonces, 219 00:09:42,399 --> 00:09:44,360 una pila, una estructura de pila 220 00:09:44,360 --> 00:09:46,379 o cola, se hace con un 221 00:09:46,379 --> 00:09:48,179 linked list, con una lista enlazada, que es mucho más 222 00:09:48,179 --> 00:09:50,200 eficiente para meter y sacar 223 00:09:50,200 --> 00:09:50,840 al principio. 224 00:09:50,840 --> 00:09:52,840 ¿vale? por eso 225 00:09:52,840 --> 00:09:55,480 esto implementa 226 00:09:55,480 --> 00:09:57,700 esta de aquí, pero esta no, porque es que es una tontería 227 00:09:57,700 --> 00:09:59,639 hacer esa cosa tan retorcida 228 00:09:59,639 --> 00:10:01,659 bueno, pues entonces si cotilleamos 229 00:10:01,659 --> 00:10:03,639 en las, en los métodos 230 00:10:03,639 --> 00:10:05,539 de linked list, tiene algunos que no 231 00:10:05,539 --> 00:10:07,320 tiene array list y que son 232 00:10:07,320 --> 00:10:09,440 precisamente los relacionados con 233 00:10:09,440 --> 00:10:11,700 los funcionamientos tipo pila y tipo cola 234 00:10:11,700 --> 00:10:13,500 entonces, por ejemplo, en un 235 00:10:13,500 --> 00:10:15,480 main cualquiera, yo me voy a 236 00:10:15,480 --> 00:10:17,299 hacer un linked list 237 00:10:17,299 --> 00:10:19,620 y un array list 238 00:10:19,620 --> 00:10:33,299 Vale, entonces 239 00:10:33,299 --> 00:10:41,250 Ya en la declaración 240 00:10:41,250 --> 00:10:43,490 No he puesto list genérico 241 00:10:43,490 --> 00:10:45,350 He puesto linked list y array list 242 00:10:45,350 --> 00:10:47,470 Porque yo ahora lo que quiero es cotillear 243 00:10:47,470 --> 00:10:48,669 Los métodos que me ofrece 244 00:10:48,669 --> 00:10:51,009 Y si yo aquí pongo list 245 00:10:51,009 --> 00:10:53,710 Ya sabéis que entonces el compilador 246 00:10:53,710 --> 00:10:56,029 Solo me deja llamar a los métodos de list 247 00:10:56,029 --> 00:10:57,110 A los de list 248 00:10:57,110 --> 00:10:59,529 ¿Vale? Es decir, yo solamente 249 00:10:59,529 --> 00:11:02,009 Puedo llamar a los métodos 250 00:11:02,009 --> 00:11:03,750 De la clase tal y como 251 00:11:03,750 --> 00:11:05,769 Está declarada, no instanciada 252 00:11:05,769 --> 00:11:06,929 ¿Vale? 253 00:11:07,090 --> 00:11:10,049 lo que pasa es que normalmente cuando uno hace una lista 254 00:11:10,049 --> 00:11:11,710 sea enlazada, sea ArrayList 255 00:11:11,710 --> 00:11:13,909 los métodos que quiere usar son los que 256 00:11:13,909 --> 00:11:15,070 están en list, los que están ahí 257 00:11:15,070 --> 00:11:17,570 no los específicos suyos 258 00:11:17,570 --> 00:11:19,710 los que están ahí, ¿vale? por eso yo hasta ahora 259 00:11:19,710 --> 00:11:21,870 por comodidad declaraba como 260 00:11:21,870 --> 00:11:23,669 list y luego instanciaba como me daba la gana 261 00:11:23,669 --> 00:11:26,350 pero es que ahora quiero acceder a los específicos 262 00:11:26,350 --> 00:11:28,309 de LinkedList, a los específicos 263 00:11:28,309 --> 00:11:29,610 de LinkedList 264 00:11:29,610 --> 00:11:31,610 los específicos que implementan estos 265 00:11:31,610 --> 00:11:33,970 que no están en list, no están 266 00:11:33,970 --> 00:11:35,769 aquí, no están aquí 267 00:11:35,769 --> 00:11:37,509 porque son métodos específicos 268 00:11:37,509 --> 00:11:38,889 que implementan los de aquí 269 00:11:38,889 --> 00:11:41,129 entonces si quiero cotillear 270 00:11:41,129 --> 00:11:43,049 en los métodos específicos de linked list 271 00:11:43,049 --> 00:11:44,309 que implementan los de aquí 272 00:11:44,309 --> 00:11:46,350 no puedo declararlo como list 273 00:11:46,350 --> 00:11:47,509 porque entonces solo veo los de aquí 274 00:11:47,509 --> 00:11:50,190 ¿vale? recordad cómo funciona la herencia 275 00:11:50,190 --> 00:11:52,350 las interfaces, todo eso 276 00:11:52,350 --> 00:11:54,950 bueno, pues por eso lo he declarado 277 00:11:54,950 --> 00:11:56,529 como linked list 278 00:11:56,529 --> 00:11:59,590 vale, pues si ahora 279 00:11:59,590 --> 00:12:02,690 cotilleamos en 280 00:12:02,690 --> 00:12:05,750 los métodos que me ofrecen 281 00:12:05,750 --> 00:12:07,649 ambas clases, hay algunos 282 00:12:07,649 --> 00:12:12,539 que son distintos. Lista 283 00:12:12,539 --> 00:12:14,620 1, pues tiene los de list 284 00:12:14,620 --> 00:12:16,179 por supuesto, añadir, añadir 285 00:12:16,179 --> 00:12:18,419 todos, añadir muchos de golpe, añadir 286 00:12:18,419 --> 00:12:20,279 una posición, añadir al principio, 287 00:12:20,679 --> 00:12:21,259 tiene muchos, 288 00:12:22,419 --> 00:12:24,539 pero es que además el index of que hemos usado, 289 00:12:24,639 --> 00:12:25,960 el iterador para sacar iterador, 290 00:12:26,559 --> 00:12:28,639 pero es que además tiene unos muy raros 291 00:12:28,639 --> 00:12:29,480 que empiezan por P. 292 00:12:30,480 --> 00:12:32,480 El pick, el pull, el push, 293 00:12:32,779 --> 00:12:34,539 el pop, ¿vale? 294 00:12:34,539 --> 00:12:35,700 Pues estos métodos 295 00:12:35,700 --> 00:12:38,360 son métodos que en realidad hacen 296 00:12:38,360 --> 00:12:39,820 lo mismo, el push 297 00:12:39,820 --> 00:12:42,220 lo que está haciendo es lo mismo que añadir 298 00:12:42,220 --> 00:12:43,580 al final el atlas, es lo mismo 299 00:12:43,580 --> 00:12:45,940 pero han hecho otro igual que se llama push 300 00:12:45,940 --> 00:12:47,179 solo por compatibilidad 301 00:12:47,179 --> 00:12:49,340 porque push es el nombre habitual 302 00:12:49,340 --> 00:12:52,320 con el que uno se refiere 303 00:12:52,320 --> 00:12:54,059 a la acción de apilar en una pila 304 00:12:54,059 --> 00:12:55,700 entonces 305 00:12:55,700 --> 00:12:57,700 con este rollo lo que estoy diciendo es que 306 00:12:57,700 --> 00:13:00,259 linked list te ofrece métodos con nombrecitos 307 00:13:00,259 --> 00:13:01,720 que suenan 308 00:13:01,720 --> 00:13:04,120 al funcionamiento de pilas 309 00:13:04,120 --> 00:13:05,600 con su terminología habitual 310 00:13:05,600 --> 00:13:07,840 por si uno quiere trabajar con algo como 311 00:13:07,840 --> 00:13:09,960 si fuera una pila, pues porque 312 00:13:09,960 --> 00:13:11,940 ya está, pues porque le gusta, porque anda 313 00:13:11,940 --> 00:13:13,679 mira, esto que voy a trabajar 314 00:13:13,679 --> 00:13:15,840 funciona como una pila, pues uso 315 00:13:15,840 --> 00:13:17,759 una linked list y en lugar de añadir 316 00:13:17,759 --> 00:13:19,740 hago push y hago pop y ya está, y queda 317 00:13:19,740 --> 00:13:21,679 más bonito, estoy haciendo lo mismo que si hago add 318 00:13:21,679 --> 00:13:23,740 vale, pero queda más bonito si lo llamo así 319 00:13:23,740 --> 00:13:25,759 bueno, pues estos 320 00:13:25,759 --> 00:13:26,639 métodos de aquí 321 00:13:26,639 --> 00:13:29,100 que uno puede ver lo que hacen 322 00:13:29,100 --> 00:13:31,919 pues te saca el elemento en la cabecera de la lista 323 00:13:31,919 --> 00:13:33,299 o null si no sé qué 324 00:13:33,299 --> 00:13:34,940 o pues lo mismo 325 00:13:34,940 --> 00:13:37,139 te devuelve 326 00:13:37,139 --> 00:13:40,000 este método es equivalente a 327 00:13:40,000 --> 00:13:42,299 borrame el primero, pop es equivalente 328 00:13:42,299 --> 00:13:44,240 a este, es el mismo, es otro con otro 329 00:13:44,240 --> 00:13:46,100 nombre, pero como ese es el nombre 330 00:13:46,100 --> 00:13:48,259 habitual de las pilas 331 00:13:48,259 --> 00:13:49,799 pues te hacen otro con otro 332 00:13:49,799 --> 00:13:51,799 nombre, el push 333 00:13:51,799 --> 00:13:53,379 pues lo mismo, es el mismo que este 334 00:13:53,379 --> 00:13:56,179 el push es igual que este 335 00:13:56,179 --> 00:13:57,340 lo que pasa es que este 336 00:13:57,340 --> 00:13:59,419 es la implementación de the queue 337 00:13:59,419 --> 00:14:01,879 y at first es la implementación de list 338 00:14:01,879 --> 00:14:04,080 están ahí doblados 339 00:14:04,080 --> 00:14:06,039 pero bueno, esto es una jerarquía 340 00:14:06,039 --> 00:14:07,460 de cosas, de métodos para que uno 341 00:14:07,460 --> 00:14:10,159 pues tenga flexibilidad, para que sus aplicaciones 342 00:14:10,159 --> 00:14:12,019 sean bonitas, elija lo que le guste 343 00:14:12,019 --> 00:14:13,539 etcétera, vale 344 00:14:13,539 --> 00:14:15,960 entonces si miramos en lista 2 345 00:14:15,960 --> 00:14:17,820 que es ArrayList, esos 346 00:14:17,820 --> 00:14:19,080 métodos no van a estar 347 00:14:19,080 --> 00:14:25,549 esos métodos los buscamos, los que empiezan por 348 00:14:25,549 --> 00:14:26,590 P y no están 349 00:14:26,590 --> 00:14:29,690 no están, porque ArrayList 350 00:14:29,690 --> 00:14:31,470 no implementa de queue, luego 351 00:14:31,470 --> 00:14:32,830 no tiene esos métodos 352 00:14:32,830 --> 00:14:35,529 no los tiene, podría 353 00:14:35,529 --> 00:14:37,409 implementar de queue y podríamos simular una 354 00:14:37,409 --> 00:14:39,129 pila y una cola con un ArrayList, pero 355 00:14:39,129 --> 00:14:42,210 que poco eficiente, estaríamos rompiendo el array 356 00:14:42,210 --> 00:14:44,029 creándolo cada dos por tres 357 00:14:44,029 --> 00:14:46,149 pues no, implementamos de queue con linked list 358 00:14:46,149 --> 00:14:47,870 y ya está, veis 359 00:14:47,870 --> 00:14:48,929 esta tiene los de list 360 00:14:48,929 --> 00:14:51,049 array list tiene los de list 361 00:14:51,049 --> 00:14:53,570 y ya está, porque no los de list 362 00:14:53,570 --> 00:14:55,289 y yo creo que no implementa ninguna otra 363 00:14:55,289 --> 00:14:58,289 no, array list tiene los de list 364 00:14:58,289 --> 00:15:00,250 ya está, no implementa nadie más 365 00:15:00,250 --> 00:15:01,809 sin embargo, linked list 366 00:15:01,809 --> 00:15:03,529 tiene los de list 367 00:15:03,529 --> 00:15:05,990 y tiene los de de queue, tiene los dos 368 00:15:05,990 --> 00:15:07,830 estos y estos, porque implementa 369 00:15:07,830 --> 00:15:10,129 las dos, recordad que una clase 370 00:15:10,129 --> 00:15:11,750 puede implementar muchas interfaces diferentes 371 00:15:11,750 --> 00:15:13,950 pues LinkedList implementa esta 372 00:15:13,950 --> 00:15:15,549 y esta, luego tiene más métodos 373 00:15:15,549 --> 00:15:17,710 que en realidad 374 00:15:17,710 --> 00:15:19,669 hacen lo mismo, pero tienen nombres distintos 375 00:15:19,669 --> 00:15:21,269 para simular esos funcionamientos 376 00:15:21,269 --> 00:15:22,610 ¿vale? 377 00:15:23,509 --> 00:15:25,490 y luego hay una clase interesante 378 00:15:25,490 --> 00:15:27,730 que tampoco nos vamos a meter en ella 379 00:15:27,730 --> 00:15:29,629 que es esta 380 00:15:29,629 --> 00:15:31,970 que es una lista en realidad 381 00:15:31,970 --> 00:15:33,389 una lista para 382 00:15:33,389 --> 00:15:35,629 encolar cosas y desencolarlas 383 00:15:35,629 --> 00:15:37,730 una lista, llamemos encolar 384 00:15:37,730 --> 00:15:39,409 y desencolar, a meter y sacar. Es que es lo mismo. 385 00:15:40,009 --> 00:15:41,929 Lo único es que te incorpora un mecanismo 386 00:15:41,929 --> 00:15:43,730 para establecer 387 00:15:43,730 --> 00:15:45,710 prioridad entre los elementos. Tú puedes establecer 388 00:15:45,710 --> 00:15:47,809 prioridad y cuando tú encolas, en función 389 00:15:47,809 --> 00:15:49,429 de la prioridad, él se cuela o no se cuela. 390 00:15:50,590 --> 00:15:51,730 Entonces, te incorpora un 391 00:15:51,730 --> 00:15:53,629 pequeño mecanismo para que tú establezcas 392 00:15:53,629 --> 00:15:55,730 encólame, pero este tiene prioridad tal. 393 00:15:55,830 --> 00:15:57,750 Pues se cuela a los demás. Puedes hacer 394 00:15:57,750 --> 00:15:59,990 una jerarquía por prioridades. 395 00:16:00,210 --> 00:16:01,389 Bueno, pues que sepáis que 396 00:16:01,389 --> 00:16:03,590 existe, por si uno 397 00:16:03,590 --> 00:16:05,230 resulta que tiene una aplicación 398 00:16:05,230 --> 00:16:07,710 en la cual el concepto de prioridad 399 00:16:07,710 --> 00:16:09,690 en los objetos, por alguna razón 400 00:16:09,690 --> 00:16:11,370 importa, entonces dice 401 00:16:11,370 --> 00:16:13,009 ah, pues que bonito, lo simulo 402 00:16:13,009 --> 00:16:15,529 con Priority View, que no hace 403 00:16:15,529 --> 00:16:17,429 falta, uno podría simular su prioridad y 404 00:16:17,429 --> 00:16:19,629 programarla a su manera, pero bueno 405 00:16:19,629 --> 00:16:21,750 hay una clase que te permite 406 00:16:21,750 --> 00:16:23,590 encolar y desencolar 407 00:16:23,590 --> 00:16:25,450 con prioridad, si tú fijas 408 00:16:25,450 --> 00:16:27,490 una prioridad, pues si tienes una aplicación que es 409 00:16:27,490 --> 00:16:28,929 justo eso lo que quieres hacer 410 00:16:28,929 --> 00:16:31,750 venga, vamos a jugar a usar esta clase 411 00:16:31,750 --> 00:16:33,830 en lugar de programarlo yo entero, lo que sea 412 00:16:33,830 --> 00:16:35,750 vale 413 00:16:35,750 --> 00:16:39,070 bueno 414 00:16:39,070 --> 00:16:41,049 pues esta es más o menos la jerarquía 415 00:16:41,049 --> 00:16:43,049 que esto si lo veis 416 00:16:43,049 --> 00:16:44,429 pues ya os tiene que decir algo 417 00:16:44,429 --> 00:16:47,450 y no tiene que asustaros 418 00:16:47,450 --> 00:16:48,470 ni volveros locos 419 00:16:48,470 --> 00:16:50,330 esta es la jerarquía 420 00:16:50,330 --> 00:16:52,409 esto de queue es saber lo que es 421 00:16:52,409 --> 00:16:55,330 y ya está 422 00:16:55,330 --> 00:16:57,110 y ArrayList, LinkedList sabemos usarlo 423 00:16:57,110 --> 00:16:58,649 y VectorStack era 424 00:16:58,649 --> 00:17:01,470 la primera versión de pila que se hizo 425 00:17:01,470 --> 00:17:03,529 hace siglos mil 426 00:17:03,529 --> 00:17:06,390 antes de que se organizara ya por 427 00:17:06,390 --> 00:17:08,769 implementaciones, ya no, vamos a hacer una implementación 428 00:17:08,769 --> 00:17:10,569 queue, luego una de queue 429 00:17:10,569 --> 00:17:12,410 linked list que implemente de queue, antes de 430 00:17:12,410 --> 00:17:14,329 reorganizarlo todo, pues stack 431 00:17:14,329 --> 00:17:16,470 era una clase para simular una pila 432 00:17:16,470 --> 00:17:17,410 ya está, punto pelota 433 00:17:17,410 --> 00:17:19,650 y vector era una clase 434 00:17:19,650 --> 00:17:21,789 para simular una colección de datos 435 00:17:21,789 --> 00:17:24,029 y ahí estaban 436 00:17:24,029 --> 00:17:27,009 y se acabó 437 00:17:27,009 --> 00:17:28,450 bueno y de aquí 438 00:17:28,450 --> 00:17:30,609 pues tenemos 439 00:17:30,609 --> 00:17:31,470 esto ahora, verdad 440 00:17:31,470 --> 00:17:33,789 Tenemos ahora este marroncito 441 00:17:33,789 --> 00:17:35,930 De conjuntos 442 00:17:35,930 --> 00:17:37,869 Por aquí, para acabar con colección 443 00:17:37,869 --> 00:17:41,779 Pues venga 444 00:17:41,779 --> 00:17:48,269 Vamos a ello 445 00:17:48,269 --> 00:17:55,500 Vale, a ver 446 00:17:55,500 --> 00:18:07,500 Bueno, pues a ver, entonces 447 00:18:07,500 --> 00:18:10,119 Los conjuntos son 448 00:18:10,119 --> 00:18:11,980 Otra filosofía 449 00:18:11,980 --> 00:18:14,140 Para guardar datos todos a mogollón 450 00:18:14,140 --> 00:18:16,299 En este caso 451 00:18:16,299 --> 00:18:18,960 No se van a guardar 452 00:18:18,960 --> 00:18:20,259 En una posición concreta 453 00:18:20,259 --> 00:18:22,220 Eso es lo que lo distingue de las listas 454 00:18:22,220 --> 00:18:24,599 y ya está, que no se van a guardar en una posición 455 00:18:24,599 --> 00:18:26,460 luego no existe 456 00:18:26,460 --> 00:18:28,440 el get por posición, no existe 457 00:18:28,440 --> 00:18:30,160 los datos están todos ahí 458 00:18:30,160 --> 00:18:32,519 pero no tienen posición, luego la implicación 459 00:18:32,519 --> 00:18:33,099 es que no 460 00:18:33,099 --> 00:18:36,160 puedo guardar yo dos objetos cuyo 461 00:18:36,160 --> 00:18:38,099 equals me dé true, no puedo 462 00:18:38,099 --> 00:18:40,119 guardar dos objetos cuyo equals me dé true 463 00:18:40,119 --> 00:18:41,460 porque entonces 464 00:18:41,460 --> 00:18:44,119 para la clase colección serían 465 00:18:44,119 --> 00:18:46,140 indistinguibles, serían completamente 466 00:18:46,140 --> 00:18:47,579 indistinguibles, porque dos objetos 467 00:18:47,579 --> 00:18:49,579 son distinguibles por el equals 468 00:18:49,579 --> 00:18:50,799 ¿vale? 469 00:18:50,799 --> 00:18:53,759 entonces, yo no puedo meter 470 00:18:53,759 --> 00:18:55,700 en un set dos conjuntos 471 00:18:55,700 --> 00:18:56,619 cuyo equals de 472 00:18:56,619 --> 00:18:58,099 true 473 00:18:58,099 --> 00:19:01,500 a ver, si yo tengo dos objetos 474 00:19:01,500 --> 00:19:03,660 alumno con mismo nif y nombre 475 00:19:03,660 --> 00:19:05,460 dos objetos alumno con mismo nif y nombre 476 00:19:05,460 --> 00:19:07,579 pero claro, yo no he 477 00:19:07,579 --> 00:19:09,559 implementado equals, entonces 478 00:19:09,559 --> 00:19:11,079 tira del equals de object 479 00:19:11,079 --> 00:19:13,500 y el equals de object, ya sabéis que 480 00:19:13,500 --> 00:19:15,539 significa, dos objetos son iguales 481 00:19:15,539 --> 00:19:17,440 solo si son exactamente 482 00:19:17,440 --> 00:19:19,259 uno encima de otro, es decir 483 00:19:19,259 --> 00:19:20,500 responde a la misma dirección 484 00:19:20,500 --> 00:19:22,880 entonces en ese caso, claro que puedo meterlos en un set 485 00:19:22,880 --> 00:19:24,579 porque es que el equals da false 486 00:19:24,579 --> 00:19:26,240 ¿vale? 487 00:19:26,359 --> 00:19:29,079 luego el criterio para ver si el set admite 488 00:19:29,079 --> 00:19:30,420 dos objetos 489 00:19:30,420 --> 00:19:32,579 es que su equals dé false 490 00:19:32,579 --> 00:19:33,980 sea cual sea el equals 491 00:19:33,980 --> 00:19:36,720 que tengan ellos, el heredado de 492 00:19:36,720 --> 00:19:38,420 object, el suyo propio, etc. 493 00:19:39,880 --> 00:19:40,400 ¿vale? 494 00:19:41,359 --> 00:19:42,519 bueno, por ejemplo, aquí 495 00:19:42,519 --> 00:19:43,819 para ver un poquito 496 00:19:43,819 --> 00:19:46,519 así, para introducirlo 497 00:19:46,519 --> 00:19:47,940 y ya nos vamos 498 00:19:47,940 --> 00:19:49,839 Esta es la interfaz 499 00:19:49,839 --> 00:19:51,220 De nuevo es parametrizada 500 00:19:51,220 --> 00:19:54,119 Estáis pensando que lo vayamos ya 501 00:19:54,119 --> 00:19:55,480 Pero es que son las 2 y 6 502 00:19:55,480 --> 00:19:56,740 Y a mí me pagan por esto 503 00:19:56,740 --> 00:19:58,099 Es que entonces 504 00:19:58,099 --> 00:20:01,819 Vale, pues entonces 505 00:20:01,819 --> 00:20:03,640 De nuevo es parametrizada 506 00:20:03,640 --> 00:20:05,700 Entonces yo debería decir 507 00:20:05,700 --> 00:20:08,200 Oye, en este set mete objetos 508 00:20:08,200 --> 00:20:09,940 Es que aparte, si os pongo a hacer ejercicio 509 00:20:09,940 --> 00:20:11,960 Os pilláis todos, con lo cual yo de 2 a 2 y media 510 00:20:11,960 --> 00:20:13,380 Lo tengo que reservar para dar clase 511 00:20:13,380 --> 00:20:15,039 Así que 512 00:20:15,039 --> 00:20:18,480 Vale, pues entonces 513 00:20:18,480 --> 00:20:26,119 vamos a hacer un set de string 514 00:20:26,119 --> 00:20:27,140 para ver esto 515 00:20:27,140 --> 00:20:32,920 no, en un main diferente 516 00:20:32,920 --> 00:20:34,619 porque tengo todo lo de arriba 517 00:20:34,619 --> 00:20:42,230 ok, me voy a hacer aquí 518 00:20:42,230 --> 00:20:43,910 otra clase main 519 00:20:43,910 --> 00:20:59,539 vale, pues me voy a hacer un set 520 00:20:59,539 --> 00:21:01,720 de cadenas, si me hago un set 521 00:21:01,720 --> 00:21:02,779 de objetos cadena 522 00:21:02,779 --> 00:21:05,420 pues lo debería parametrizar y decir string 523 00:21:05,420 --> 00:21:07,500 vale, venga, esto van a ser 524 00:21:07,500 --> 00:21:11,349 nombres, que implementación 525 00:21:11,349 --> 00:21:12,910 elijo, hay tres 526 00:21:12,910 --> 00:21:15,710 ya el viernes 527 00:21:15,710 --> 00:21:17,069 veremos 528 00:21:17,069 --> 00:21:18,450 en qué se diferencian 529 00:21:18,450 --> 00:21:21,470 y qué matices hay de usar una 530 00:21:21,470 --> 00:21:22,269 o usar la otra. 531 00:21:23,190 --> 00:21:24,869 Pero lo que está claro es que las tres son 532 00:21:24,869 --> 00:21:26,630 implementaciones de un conjunto. 533 00:21:26,990 --> 00:21:29,230 Luego las tres valen para guardar cosas ahí 534 00:21:29,230 --> 00:21:31,210 sin posición, con lo cual 535 00:21:31,210 --> 00:21:32,369 no se admiten duplicados. 536 00:21:33,250 --> 00:21:34,809 Sea cual sea la que yo elija. 537 00:21:35,410 --> 00:21:37,210 Vamos a elegir la más eficiente. 538 00:21:38,170 --> 00:21:38,869 Bueno, eficiente. 539 00:21:40,450 --> 00:21:41,029 El haset. 540 00:21:41,349 --> 00:21:42,890 Ya explicaremos el viernes el haset 541 00:21:42,890 --> 00:21:44,950 cómo está hecho por dentro, que lo programamos nosotros 542 00:21:44,950 --> 00:21:45,769 porque es una movida. 543 00:21:47,069 --> 00:21:49,369 Esta es una implementación concreta de un conjunto. 544 00:21:56,289 --> 00:21:56,589 Vale. 545 00:21:57,470 --> 00:21:59,069 Vamos a meterle ahora nombres. 546 00:22:00,450 --> 00:22:02,309 ¿Cómo se inserta en un conjunto? 547 00:22:04,750 --> 00:22:06,730 Exactamente igual que en cualquier otra colección. 548 00:22:07,289 --> 00:22:08,190 Con el método add. 549 00:22:09,470 --> 00:22:10,269 Exactamente igual. 550 00:22:10,349 --> 00:22:10,990 Eso no cambia. 551 00:22:11,930 --> 00:22:13,309 Insertar con el método add. 552 00:22:13,890 --> 00:22:14,390 Pues nada. 553 00:22:14,970 --> 00:22:19,650 Ya tenemos una cadena ahí. 554 00:22:20,970 --> 00:22:22,490 Aquí para insertar no cambia. 555 00:22:22,490 --> 00:22:32,920 vamos a meterle 556 00:22:32,920 --> 00:22:35,460 a este conjunto 557 00:22:35,460 --> 00:22:37,680 esta misma cadena otra vez 558 00:22:37,680 --> 00:22:41,180 vale, muy bien, ahí 559 00:22:41,180 --> 00:22:43,460 y ahora vamos a recorrer 560 00:22:43,460 --> 00:22:44,220 la colección 561 00:22:44,220 --> 00:22:47,400 vamos a recorrer esta colección 562 00:22:47,400 --> 00:22:48,180 para ver que tiene 563 00:22:48,180 --> 00:22:51,339 no podemos hacer esto 564 00:22:51,339 --> 00:22:52,559 como hacíamos con la lista 565 00:22:52,559 --> 00:23:00,329 si yo intento hacer esto 566 00:23:00,329 --> 00:23:04,150 uy, perdón 567 00:23:04,150 --> 00:23:05,630 nombres.size 568 00:23:05,630 --> 00:23:10,029 si, eso no estabais tan dormidos 569 00:23:10,029 --> 00:23:12,430 vale, si yo intento 570 00:23:12,430 --> 00:23:13,089 hacer esto 571 00:23:13,089 --> 00:23:15,509 nombres.get 572 00:23:15,509 --> 00:23:17,369 y es que 573 00:23:17,369 --> 00:23:20,029 me dice, ¿cómo que getty? 574 00:23:20,109 --> 00:23:22,230 ¿qué es eso de getty? este método no existe 575 00:23:22,230 --> 00:23:23,750 ese método no existe 576 00:23:23,750 --> 00:23:25,910 luego, no podemos recorrer una colección 577 00:23:25,910 --> 00:23:26,990 un conjunto así 578 00:23:26,990 --> 00:23:28,690 ¿vale, Daniel? 579 00:23:30,609 --> 00:23:31,769 todavía no he terminado de hablar 580 00:23:31,769 --> 00:23:33,690 ¿vale? 581 00:23:33,690 --> 00:23:34,890 No puedo recorrerla así 582 00:23:34,890 --> 00:23:37,029 Bueno, o iterador o for each 583 00:23:37,029 --> 00:23:39,549 Si vamos a consultar, solo a consultar 584 00:23:39,549 --> 00:23:41,769 El for each es lo más cómodo 585 00:23:41,769 --> 00:23:43,809 Para cada cadena 586 00:23:43,809 --> 00:23:47,430 C en nombres 587 00:23:47,430 --> 00:23:50,089 Vamos a mostrar que es lo que tiene 588 00:23:50,089 --> 00:23:51,890 ¿Vale? 589 00:23:52,529 --> 00:23:53,009 C 590 00:23:53,009 --> 00:23:55,809 ¿Vale? Esta es cada una de las cadenas 591 00:23:55,809 --> 00:23:57,630 Hemos hecho un conjunto 592 00:23:57,630 --> 00:23:59,029 Le hemos metido tres cadenas 593 00:23:59,029 --> 00:24:00,829 Y vamos a mostrar lo que tiene 594 00:24:00,829 --> 00:24:02,970 Vale, ejecutamos este main 595 00:24:02,970 --> 00:24:06,170 Tramposa 596 00:24:06,170 --> 00:24:09,069 Tramposa no 597 00:24:09,069 --> 00:24:12,650 Irresponsable 598 00:24:12,650 --> 00:24:15,210 Vale 599 00:24:15,210 --> 00:24:17,930 Pues efectivamente 600 00:24:17,930 --> 00:24:19,990 El tercer ola ha pasado de él 601 00:24:19,990 --> 00:24:21,069 ¿Vale? 602 00:24:22,690 --> 00:24:24,390 El tercer ola ha pasado de él 603 00:24:24,390 --> 00:24:25,150 Porque ya estaba 604 00:24:25,150 --> 00:24:28,430 Entonces a ver, ojo porque el problema 605 00:24:28,430 --> 00:24:30,190 Aquí no es de compilación 606 00:24:30,190 --> 00:24:31,569 Sino que es de tiempo de ejecución 607 00:24:31,569 --> 00:24:34,269 Entonces el compilador 608 00:24:34,269 --> 00:24:36,309 le da lo mismo, tú lo que has hecho está bien 609 00:24:36,309 --> 00:24:37,750 que es meter 610 00:24:37,750 --> 00:24:40,230 una cadena en un conjunto 611 00:24:40,230 --> 00:24:41,269 de cadenas, está bien 612 00:24:41,269 --> 00:24:43,869 y el método ha hecho lo que tenía que hacer, que es decir 613 00:24:43,869 --> 00:24:46,289 venga, hola, voy a recorrer la colección 614 00:24:46,289 --> 00:24:47,789 ¿hay alguno 615 00:24:47,789 --> 00:24:49,690 que sea igual que hola? sí lo hay 616 00:24:49,690 --> 00:24:52,250 bueno, lo meto, y ya está, y no lo ha metido 617 00:24:52,250 --> 00:24:54,769 y no te dice nada 618 00:24:54,769 --> 00:24:55,970 entonces cuidado 619 00:24:55,970 --> 00:24:57,250 porque a veces uno se puede perder 620 00:24:57,250 --> 00:24:59,509 y decir, ¿por qué no me está funcionando? 621 00:24:59,849 --> 00:25:00,950 a ver, tienes un conjunto 622 00:25:00,950 --> 00:25:03,549 tú puedes intentar meter algo 623 00:25:03,549 --> 00:25:04,890 Y si no puede ser, no puede ser 624 00:25:04,890 --> 00:25:07,470 Vais a sacar un cero muy gordo, ¿eh? ¿Lo sabéis? 625 00:25:10,700 --> 00:25:11,059 Vale 626 00:25:11,059 --> 00:25:15,859 Vale, pues esta es 627 00:25:15,859 --> 00:25:17,539 La principal diferencia 628 00:25:17,539 --> 00:25:18,720 Que no tiene get 629 00:25:18,720 --> 00:25:21,220 Y que no podemos meter duplicados 630 00:25:21,220 --> 00:25:25,700 Ahora lo que tenemos que ver 631 00:25:25,700 --> 00:25:26,420 Es 632 00:25:26,420 --> 00:25:30,019 Como está hecho por dentro y las implicaciones que tiene a la hora de usarlo 633 00:25:30,019 --> 00:25:31,420 ¿Vale? Venga, vamos a dejarlo aquí 634 00:25:31,420 --> 00:25:33,859 Porque me estoy poniendo muy nerviosa 635 00:25:33,859 --> 00:25:37,079 Lo de hablar sola 636 00:25:37,079 --> 00:25:37,359 ¡Gracias!