1 00:00:00,000 --> 00:00:03,540 pues esta es nuestra 2 00:00:03,540 --> 00:00:05,660 entidad, vamos a ponerle 3 00:00:05,660 --> 00:00:06,459 un constructor 4 00:00:06,459 --> 00:00:09,179 con todo 5 00:00:09,179 --> 00:00:11,660 y sin nada 6 00:00:11,660 --> 00:00:12,240 muy bien 7 00:00:12,240 --> 00:00:15,880 si tuviera además una propiedad 8 00:00:15,880 --> 00:00:17,399 que fuera colección de algo 9 00:00:17,399 --> 00:00:19,260 que fuera una colección 10 00:00:19,260 --> 00:00:21,760 pues normalmente 11 00:00:21,760 --> 00:00:23,120 se hacen constructores 12 00:00:23,120 --> 00:00:25,359 sin incluir la colección 13 00:00:25,359 --> 00:00:27,280 porque esa propiedad se suele inicializar 14 00:00:27,280 --> 00:00:29,219 cuando ya está instancia el objeto 15 00:00:29,219 --> 00:00:29,699 Pero bueno 16 00:00:29,699 --> 00:00:32,520 Nada, olvida lo que he dicho 17 00:00:32,520 --> 00:00:33,700 No 18 00:00:33,700 --> 00:00:38,759 Pero qué cosas, estoy haciendo una 19 00:00:38,759 --> 00:00:42,490 Venga 20 00:00:42,490 --> 00:00:44,649 Constructor sin parámetros 21 00:00:44,649 --> 00:00:46,570 Getty set 22 00:00:46,570 --> 00:00:48,710 Punto pelota, y ahora una pequeña revisión 23 00:00:48,710 --> 00:00:50,549 De todas las colecciones que hemos visto 24 00:00:50,549 --> 00:00:52,689 E incorporando el tree set y el 25 00:00:52,689 --> 00:00:54,409 Tree map 26 00:00:54,409 --> 00:00:56,450 ¿Vale? Para tener una revisión de todas 27 00:00:56,450 --> 00:00:58,289 Y de cómo funcionan, para que las entendáis 28 00:00:58,289 --> 00:01:00,409 Y nos vamos a quedar 29 00:01:00,409 --> 00:01:01,289 muy a gusto 30 00:01:01,289 --> 00:01:09,090 y nos vamos a ir muy satisfechos 31 00:01:09,090 --> 00:01:09,590 todos 32 00:01:09,590 --> 00:01:12,650 vale, esta es la entidad que vamos a meter en nuestras 33 00:01:12,650 --> 00:01:14,069 cajitas, en nuestras colecciones 34 00:01:14,069 --> 00:01:15,709 venga, pues a ver 35 00:01:15,709 --> 00:01:18,450 las colecciones 36 00:01:18,450 --> 00:01:19,650 recordad 37 00:01:19,650 --> 00:01:22,250 así no vemos nada, vale 38 00:01:22,250 --> 00:01:28,379 vale 39 00:01:28,379 --> 00:01:33,319 vale, recordad que 40 00:01:33,319 --> 00:01:35,599 las colecciones heredan 41 00:01:35,599 --> 00:01:37,640 de una superclase suprema 42 00:01:37,640 --> 00:01:38,739 que es Collection 43 00:01:38,739 --> 00:01:41,340 ¿vale? que es una interfaz 44 00:01:41,340 --> 00:01:43,040 que ofrece unos 45 00:01:43,040 --> 00:01:44,480 métodos básicos 46 00:01:44,480 --> 00:01:47,620 que tienen que implementar todas las colecciones 47 00:01:47,620 --> 00:01:49,379 que los métodos básicos ¿cuáles son? 48 00:01:49,459 --> 00:01:51,099 pues meter en la colección 49 00:01:51,099 --> 00:01:54,040 eliminar de la colección 50 00:01:54,040 --> 00:01:55,019 y poco más 51 00:01:55,019 --> 00:01:56,480 ofrece unos métodos básicos 52 00:01:56,480 --> 00:01:58,819 entonces quien quiera ser una colección 53 00:01:58,819 --> 00:02:00,840 tiene que implementar esta 54 00:02:00,840 --> 00:02:03,120 interfaz dando 55 00:02:03,120 --> 00:02:05,000 ya un comportamiento concreto. 56 00:02:05,579 --> 00:02:06,799 Vale. Pues entonces, 57 00:02:06,959 --> 00:02:08,460 aquí distinguimos que había dos 58 00:02:08,460 --> 00:02:10,419 filosofías de colecciones. 59 00:02:10,819 --> 00:02:12,419 Dos filosofías de colecciones. 60 00:02:13,099 --> 00:02:14,060 Que son 61 00:02:14,060 --> 00:02:16,659 las listas 62 00:02:16,659 --> 00:02:20,159 y los conjuntos. 63 00:02:20,919 --> 00:02:22,919 Estas son dos filosofías de colecciones. 64 00:02:23,240 --> 00:02:25,120 Y las dos implementan colección. 65 00:02:25,500 --> 00:02:27,000 ¿Vale? Recordad 66 00:02:27,000 --> 00:02:28,680 que lo que tienen todas en común, eso sí, 67 00:02:29,319 --> 00:02:30,500 es que son dinámicas. 68 00:02:31,280 --> 00:02:32,479 Dinámicas significa 69 00:02:32,479 --> 00:02:36,620 que inicialmente cuando esa colección se instancia no tiene espacio para nada. 70 00:02:37,360 --> 00:02:42,900 El espacio se va generando según vamos metiendo elementos, ¿vale? 71 00:02:43,759 --> 00:02:49,400 Esa es la motivación de que existan, precisamente, ese comportamiento dinámico 72 00:02:49,400 --> 00:02:51,419 que es el que no tiene el array. 73 00:02:51,900 --> 00:02:55,699 El array haces tu caja con las posiciones y ahí se queda, ¿vale? 74 00:02:55,699 --> 00:03:13,080 Bueno, pues con la motivación de generar una caja inicialmente sin espacio y pum, pum, pum, se va abriendo, se va más metiendo con esa motivación, se crean estas colecciones que, repito, heredan todas de la superclase colección. 75 00:03:13,080 --> 00:03:46,389 Dos filosofías de construcción, dos filosofías de construcción, las listas y los conjuntos. Las listas, las listas ya sabemos por qué se caracterizan. Las listas se caracterizan porque cada objeto, cada objeto en la lista, cada objeto de la lista tiene una posición asociada y esa es la diferencia entre listas y conjuntos. 76 00:03:46,389 --> 00:03:47,430 Y no hay otras 77 00:03:47,430 --> 00:03:50,789 Lo que pasa es que eso luego tiene implicaciones 78 00:03:50,789 --> 00:03:52,949 En cómo funcionan y en cómo se usan 79 00:03:52,949 --> 00:03:53,229 Claro 80 00:03:53,229 --> 00:04:00,669 Bueno, si tú no necesitas 81 00:04:00,669 --> 00:04:04,830 Los objetos no 82 00:04:04,830 --> 00:04:06,530 Tienen 83 00:04:06,530 --> 00:04:08,169 Posición 84 00:04:08,169 --> 00:04:09,830 Asociada 85 00:04:09,830 --> 00:04:12,889 ¿Vale? Esta es la diferencia fundamental 86 00:04:12,889 --> 00:04:17,660 Entonces 87 00:04:17,660 --> 00:04:18,839 ¿Qué ocurre? 88 00:04:19,819 --> 00:04:23,779 Que el llevar un registro de la posición en la que cae un elemento 89 00:04:23,779 --> 00:04:27,259 implica pues cierta complejidad a la hora de programarlo. 90 00:04:28,060 --> 00:04:31,879 Entonces, si realmente uno necesita almacenar las cosas 91 00:04:31,879 --> 00:04:35,220 y el orden, la posición en la que ha caído cada cosa le da igual, 92 00:04:35,879 --> 00:04:37,040 pues ¿para qué va a usar una lista? 93 00:04:37,560 --> 00:04:38,379 Usa un conjunto. 94 00:04:39,300 --> 00:04:43,439 Porque computacionalmente a la hora de ejecutarse todos los métodos que hay por debajo, 95 00:04:43,980 --> 00:04:46,319 pues va a tardar menos, va a ser más eficiente. 96 00:04:46,319 --> 00:04:50,079 porque no hay que llevar ese registro de las posiciones 97 00:04:50,079 --> 00:04:53,339 que no lo llevamos nosotros, lo lleva la propia colección en sus métodos 98 00:04:53,339 --> 00:04:56,120 que están programados, pero tiene una carga por debajo 99 00:04:56,120 --> 00:04:58,420 vale, entonces 100 00:04:58,420 --> 00:05:02,399 que en las listas cada objeto tenga una posición 101 00:05:02,399 --> 00:05:05,100 implica automáticamente 102 00:05:05,100 --> 00:05:06,220 esto, ¿verdad? 103 00:05:07,240 --> 00:05:09,860 implica que puede haber duplicados 104 00:05:09,860 --> 00:05:16,269 puede estar 105 00:05:16,269 --> 00:05:20,430 el mismo objeto 106 00:05:20,430 --> 00:05:23,410 varias veces 107 00:05:23,410 --> 00:05:27,790 pero en diferentes posiciones 108 00:05:27,790 --> 00:05:28,310 claro 109 00:05:28,310 --> 00:05:31,350 en un mapa de 110 00:05:31,350 --> 00:05:34,009 ahora el mapa 111 00:05:34,009 --> 00:05:35,829 lo vemos después, pero en diferentes 112 00:05:35,829 --> 00:05:37,850 posiciones, vale, en diferentes 113 00:05:37,850 --> 00:05:38,410 posiciones 114 00:05:38,410 --> 00:05:39,970 vale 115 00:05:39,970 --> 00:05:43,990 sin embargo 116 00:05:43,990 --> 00:05:45,290 en los conjuntos 117 00:05:45,290 --> 00:05:49,910 uy, aquí no se me ha puesto la flecha gorda, que pena 118 00:05:49,910 --> 00:05:52,610 ah, sí, ahora sí 119 00:05:52,610 --> 00:06:11,829 Esto está mal expresado. 120 00:06:16,930 --> 00:06:19,490 Sí, pero vamos, que esto es una esquemita para ir guiando. 121 00:06:21,189 --> 00:06:29,149 Bueno, vale. 122 00:06:30,189 --> 00:06:32,170 Y aquí es donde nos viene. 123 00:06:32,750 --> 00:06:34,970 ¿Pero qué es esto de el mismo objeto? 124 00:06:36,050 --> 00:06:37,810 Ahora en nuestro ejemplo de pedidos. 125 00:06:38,009 --> 00:06:40,170 ¿Qué significa el mismo pedido? 126 00:06:41,129 --> 00:06:42,129 Pues no lo sé. 127 00:06:42,509 --> 00:06:44,410 Es algo que de nuevo decidimos nosotros. 128 00:06:45,410 --> 00:06:45,910 ¿Vale? 129 00:06:45,910 --> 00:06:53,970 Para nosotros la idea de el mismo pedido, pedido igual a otro, lo tenemos que imponer nosotros desde fuera. 130 00:06:55,490 --> 00:07:03,470 Porque la aplicación Java, la máquina virtual de Java, la aplicación no tiene ningún criterio sobre qué significa un pedido igual a otro. 131 00:07:04,529 --> 00:07:11,350 Si nosotros no se lo damos ese criterio, ya sabemos cuál es el criterio de ser igual para Java por defecto. 132 00:07:11,350 --> 00:07:15,069 Que es ser el mismo, estar en la misma dirección de memoria, el mismito. 133 00:07:15,910 --> 00:07:17,930 ¿Vale? Entonces 134 00:07:17,930 --> 00:07:19,449 vámonos aquí. 135 00:07:21,920 --> 00:07:22,160 Vale. 136 00:07:24,439 --> 00:07:25,639 Vamos a hacernos aquí 137 00:07:25,639 --> 00:07:27,519 un main, nuestro main 138 00:07:27,519 --> 00:07:28,579 de pruebas para 139 00:07:28,579 --> 00:07:31,120 poner todo esto, ¿verdad? 140 00:07:31,639 --> 00:07:33,759 Entonces, esta clase 141 00:07:33,759 --> 00:07:35,500 o al menos la 142 00:07:35,500 --> 00:07:36,459 primera hora y media 143 00:07:36,459 --> 00:07:39,500 va a ser un poco para tontos. 144 00:07:39,500 --> 00:07:40,759 Espero que eso no os ofenda. 145 00:07:47,420 --> 00:07:56,839 Porque estoy diciendo 146 00:07:56,839 --> 00:07:59,019 Viedades que deberíais saber y deberíais decir 147 00:07:59,019 --> 00:08:00,819 Otra vez lo mismo mil veces 148 00:08:00,819 --> 00:08:01,279 Vale 149 00:08:01,279 --> 00:08:08,939 Efectivamente, vale, entonces 150 00:08:08,939 --> 00:08:11,620 Pedido P1 151 00:08:11,620 --> 00:08:12,899 Entonces todas estas cosas 152 00:08:12,899 --> 00:08:14,680 Por favor, si todo esto 153 00:08:14,680 --> 00:08:16,420 Todo este repaso de hoy 154 00:08:16,420 --> 00:08:24,839 Y todo esto lo tenéis clarísimo y lo sabéis aplicar en los ejercicios que hagamos jueves, viernes, incluso lunes que tenemos clase. 155 00:08:25,000 --> 00:08:28,319 Pues deberíais hacer bien el examen. Es que yo no sé qué más necesitáis. 156 00:08:28,579 --> 00:08:30,060 Aparte de un trasplante de cerebro. 157 00:08:32,500 --> 00:08:35,120 Se están consiguiendo los primeros trasplantes de cerebro. 158 00:08:36,120 --> 00:08:36,860 ¿En serio? 159 00:08:37,120 --> 00:08:40,379 Eso sí que me... Hombre, si hay zonas de cerebro. 160 00:08:43,019 --> 00:08:44,879 Querían intentar trasplantar cabeza. 161 00:08:44,879 --> 00:09:05,580 A ver, pedido, tenemos descripción, código, gomas, descripción, código, precio, 3,4 y fecha. 162 00:09:13,070 --> 00:09:14,909 No, pero esta vez no va a ser así. 163 00:09:16,889 --> 00:09:19,450 y mi promesa tiene el valor 164 00:09:19,450 --> 00:09:20,690 que tienen las promesas 165 00:09:20,690 --> 00:09:23,929 de las mujeres o de los profes 166 00:09:23,929 --> 00:09:25,230 y la combinación de ambas ya 167 00:09:25,230 --> 00:09:27,409 oye, la de mi padre era peor 168 00:09:27,409 --> 00:09:29,629 siempre tenía la frase de prometer hasta meter 169 00:09:29,629 --> 00:09:31,090 y cuando lo has metido a olvidar lo prometido 170 00:09:31,090 --> 00:09:32,789 pues exactamente, esa es la idea 171 00:09:32,789 --> 00:09:35,690 todos los padres del universo 172 00:09:35,690 --> 00:09:37,549 venga, a ver 173 00:09:37,549 --> 00:09:38,549 entonces 174 00:09:38,549 --> 00:09:41,610 hablando estamos, recordad que estamos 175 00:09:41,610 --> 00:09:43,710 en este concepto, el mismo 176 00:09:43,710 --> 00:09:45,990 ahora, lógicamente 177 00:09:45,990 --> 00:10:06,950 Todo el mundo, obviamente, sabe decirme que me muestra esto, ¿verdad? Obviamente, ¿no? Esto es un programa, todo el mundo sabe que me muestra esto, ¿verdad? ¿Qué me va a salir? ¿Me va a salir true? 178 00:10:06,950 --> 00:10:10,450 me sale un falso como una casa 179 00:10:10,450 --> 00:10:12,529 a esto voy, no puede ser 180 00:10:12,529 --> 00:10:14,330 que a día de hoy me digáis true 181 00:10:14,330 --> 00:10:16,450 porque entonces todo esto de colecciones 182 00:10:16,450 --> 00:10:18,330 ya no vale para nada, ni lo de herencia 183 00:10:18,330 --> 00:10:19,029 ni lo de nada 184 00:10:19,029 --> 00:10:24,590 y luego decís 185 00:10:24,590 --> 00:10:26,750 que Rosa se pone nerviosa 186 00:10:26,750 --> 00:10:32,230 ya, pero es que 187 00:10:32,230 --> 00:10:34,350 lo único que tienen que hacer para orientarse es 188 00:10:34,350 --> 00:10:36,250 en casa, revisarlo 189 00:10:36,250 --> 00:10:39,289 William, solo verte levantar la mano 190 00:10:39,289 --> 00:10:40,389 es que me cago de miedo 191 00:10:40,389 --> 00:10:42,429 así que 192 00:10:42,429 --> 00:10:45,309 piénsate lo que vas a preguntar 193 00:10:45,309 --> 00:10:55,029 no es el javasql, es javautil 194 00:10:55,029 --> 00:10:56,629 vale 195 00:10:56,629 --> 00:10:58,769 entonces, por dios, que me digáis 196 00:10:58,769 --> 00:11:01,490 que esto no va a salir true a estas alturas 197 00:11:01,490 --> 00:11:04,889 ya, pero vale 198 00:11:04,889 --> 00:11:05,669 pero yo no lo he hecho 199 00:11:05,669 --> 00:11:07,809 entonces todo el mundo tiene claro que esto sale 200 00:11:07,809 --> 00:11:09,909 falso porque esta es una instancia 201 00:11:09,909 --> 00:11:11,070 que está en una posición de memoria 202 00:11:11,070 --> 00:11:13,789 esta es otra que está en otra posición de memoria 203 00:11:13,789 --> 00:11:16,129 me da igual que los contenidos sean iguales 204 00:11:16,129 --> 00:11:18,190 dos instancias, dos posiciones de memoria 205 00:11:18,190 --> 00:11:19,909 con lo cual estos son 206 00:11:19,909 --> 00:11:20,590 objetos distintos 207 00:11:20,590 --> 00:11:24,250 claro, estos objetos cabrían 208 00:11:24,250 --> 00:11:25,809 si yo meto los dos 209 00:11:25,809 --> 00:11:27,570 en un set, entrarían los dos 210 00:11:27,570 --> 00:11:29,509 claro que entrarían los dos perfectamente 211 00:11:29,509 --> 00:11:30,809 porque son objetos distintos 212 00:11:30,809 --> 00:11:33,250 y eso es lo que me dice aquí 213 00:11:33,250 --> 00:11:35,250 la máquina virtual me dice son distintos 214 00:11:35,250 --> 00:11:46,889 Pero en las aplicaciones tenemos que darle un sentido real y si estos pedidos tienen mismas propiedades es que son el mismo, me da igual que haya varias copias en la aplicación, son el mismo. 215 00:11:46,889 --> 00:11:50,269 luego, vamos a darle ya un sentido real 216 00:11:50,269 --> 00:11:51,710 entonces lo que nunca se nos olvida 217 00:11:51,710 --> 00:11:54,029 es irnos a nuestra clase pedido 218 00:11:54,029 --> 00:11:55,190 y decir, oye tú 219 00:11:55,190 --> 00:11:58,230 te voy a hacer aquí un criterio de igualdad 220 00:11:58,230 --> 00:12:01,629 implementándote 221 00:12:01,629 --> 00:12:07,350 estoy idiota 222 00:12:07,350 --> 00:12:11,710 ya, pero 223 00:12:11,710 --> 00:12:16,730 no, pero no me lo imaginaba 224 00:12:17,529 --> 00:12:17,970 Vale. 225 00:12:19,470 --> 00:12:19,909 Venga. 226 00:12:22,840 --> 00:12:24,840 Vale, entonces, nuestro criterio, 227 00:12:25,159 --> 00:12:26,259 a esto ya lo decidimos, 228 00:12:26,379 --> 00:12:28,159 hablándolo con el que nos ha pedido la aplicación. 229 00:12:28,740 --> 00:12:30,279 Pues, hombre, el ID, para eso hay un ID. 230 00:12:31,320 --> 00:12:33,139 Pues, nada, hasco de equals con el ID. 231 00:12:33,860 --> 00:12:34,059 ¿Vale? 232 00:12:35,419 --> 00:12:35,799 ¡Hala! 233 00:12:36,379 --> 00:12:39,639 Ahora ya sí, todo el mundo me sabe decir 234 00:12:39,639 --> 00:12:41,419 que esto, lógicamente, 235 00:12:41,840 --> 00:12:43,779 si vuelvo a ejecutar este mismo código, 236 00:12:43,919 --> 00:12:44,759 ahora sí que sale true. 237 00:12:45,899 --> 00:12:48,120 Sale true, aunque yo ponga aquí bolis, 238 00:12:48,299 --> 00:12:50,779 con muchas eses, ahora ya todo el mundo 239 00:12:50,779 --> 00:12:52,820 sabe decirme que esto claro que va a salir true 240 00:12:52,820 --> 00:12:55,179 ¿vale? 241 00:12:56,179 --> 00:12:56,740 bueno 242 00:12:56,740 --> 00:12:58,120 hasta aquí hemos llegado ¿no? 243 00:12:58,799 --> 00:13:00,820 todo esto venía a cuento de que 244 00:13:00,820 --> 00:13:02,840 significa mismo objeto 245 00:13:02,840 --> 00:13:03,840 o distinto objeto 246 00:13:03,840 --> 00:13:06,379 ¿vale? bueno está claro 247 00:13:06,379 --> 00:13:08,879 vale, pues entonces esta es la diferencia 248 00:13:08,879 --> 00:13:10,279 entre listas y conjuntos 249 00:13:10,279 --> 00:13:12,600 ahora ya, dentro de las listas 250 00:13:12,600 --> 00:13:13,500 que admiten posición 251 00:13:13,500 --> 00:13:16,720 hay dos implementaciones 252 00:13:16,720 --> 00:13:17,360 distintas 253 00:13:17,360 --> 00:13:19,740 vale, dos implementaciones 254 00:13:19,740 --> 00:13:21,740 vale, pues nos vamos 255 00:13:21,740 --> 00:13:23,759 ahora con las listas 256 00:13:23,759 --> 00:13:27,220 las listas 257 00:13:27,220 --> 00:13:29,340 las listas son implementaciones 258 00:13:29,340 --> 00:13:30,179 lógicamente 259 00:13:30,179 --> 00:13:31,899 de list 260 00:13:31,899 --> 00:13:37,750 y hay dos implementaciones 261 00:13:37,750 --> 00:13:39,710 entre las cuales podemos 262 00:13:39,710 --> 00:13:42,070 elegir, está esta 263 00:13:42,070 --> 00:13:44,990 y esta otra 264 00:13:44,990 --> 00:13:47,149 vale 265 00:13:47,149 --> 00:13:49,750 y las dos son listas 266 00:13:49,750 --> 00:13:51,710 luego las dos meten los elementos 267 00:13:51,710 --> 00:13:53,289 en una posición en concreto 268 00:13:53,289 --> 00:13:56,070 y las dos me permiten recuperar por posición 269 00:13:56,070 --> 00:13:57,330 todo eso 270 00:13:57,330 --> 00:13:59,929 que a mí ese comportamiento me interesa 271 00:13:59,929 --> 00:14:01,610 porque yo quiero tener 272 00:14:01,610 --> 00:14:03,769 cada elemento en una posición 273 00:14:03,769 --> 00:14:05,230 porque me facilita la vida 274 00:14:05,230 --> 00:14:07,769 pues 275 00:14:07,769 --> 00:14:10,370 uso una lista y se acabó 276 00:14:10,370 --> 00:14:11,129 vale, me la puede 277 00:14:11,129 --> 00:14:14,330 ya, es que tú eres 278 00:14:14,330 --> 00:14:15,830 el adorador de los Arrays 279 00:14:15,830 --> 00:14:18,149 pero alguna vez tendrás que superar la fase Array 280 00:14:18,149 --> 00:14:30,019 Sí, a ver, pero lo que es cierto 281 00:14:30,019 --> 00:14:31,620 es que con un array tú tienes el control 282 00:14:31,620 --> 00:14:33,399 de todo y siempre tener el control 283 00:14:33,399 --> 00:14:35,700 va a conducir a programas computacionalmente 284 00:14:35,700 --> 00:14:36,100 mejores 285 00:14:36,100 --> 00:14:39,759 Es como que me preocupo ya de cómo está funcionando 286 00:14:39,759 --> 00:14:41,580 Claro, todo esto 287 00:14:41,580 --> 00:14:43,399 y todas las capas, de aquí a 288 00:14:43,399 --> 00:14:45,600 segundo, bueno, y en segundo sobre todo 289 00:14:45,600 --> 00:14:47,480 las capas que irán cayendo 290 00:14:47,480 --> 00:14:49,179 entre otras, que si JBC, que si 291 00:14:49,179 --> 00:14:51,220 no sé, Bernate, que si Spring, que si 292 00:14:51,220 --> 00:14:53,279 Patatín. Todas las capas se van poniendo una sobre otra. 293 00:14:53,340 --> 00:14:53,960 Y Bernate es más importante. 294 00:14:55,159 --> 00:14:57,120 Sí. Y Spring, que va por encima 295 00:14:57,120 --> 00:14:59,200 también. Pues todas esas capas 296 00:14:59,200 --> 00:15:00,600 que vamos poniendo, pa, pa, pa, pa, pa. 297 00:15:00,980 --> 00:15:03,080 Su único objetivo es que sea 298 00:15:03,080 --> 00:15:05,159 más fácil desarrollar. Pero en 299 00:15:05,159 --> 00:15:06,980 todas pierdes el control de la aplicación 300 00:15:06,980 --> 00:15:08,600 y todas las cargas computacionalmente. 301 00:15:08,960 --> 00:15:11,120 Que es justo lo que a ti no te gusta. Pero están 302 00:15:11,120 --> 00:15:12,919 todas orientadas a eso. A facilitar el desarrollo. 303 00:15:13,379 --> 00:15:14,879 Porque como ahora el problema no es tanto 304 00:15:14,879 --> 00:15:17,100 la velocidad de los CPUs. 305 00:15:17,100 --> 00:15:18,460 Pero vamos a tener programadores buenos. 306 00:15:18,460 --> 00:15:22,039 Vais a ser los mejores gracias a que vais a conocer 307 00:15:22,039 --> 00:15:23,059 Todas esas herramientas 308 00:15:23,059 --> 00:15:24,259 Ay William 309 00:15:24,259 --> 00:15:29,559 No me tiene muy nerviosa 310 00:15:29,559 --> 00:15:33,480 A ver este año hay muchos 311 00:15:33,480 --> 00:15:34,899 Porque hay muchos con pendientes de primero 312 00:15:34,899 --> 00:15:36,700 De con programación pendiente 313 00:15:36,700 --> 00:15:39,259 Eso no va a volver a ocurrir 314 00:15:39,259 --> 00:15:41,139 Porque este año solo podéis pasar ya 315 00:15:41,139 --> 00:15:42,779 Los que no tengáis 316 00:15:42,779 --> 00:15:45,059 Quien suspenda la programación ya no puede pasar 317 00:15:45,059 --> 00:15:46,200 Se va a quedar en primero sí o sí 318 00:15:46,200 --> 00:15:47,440 Entonces, ¿cuántos habrá en segundo? 319 00:15:47,580 --> 00:15:48,860 Pues dime, ¿cuántos vais a aprobar en programación? 320 00:15:48,980 --> 00:15:49,919 Esos serán los que estéis en segundo. 321 00:15:52,240 --> 00:15:54,159 Claro, a ver, es que no va a ocurrir 322 00:15:54,159 --> 00:15:55,539 que apruebes una y suspendas la otra, 323 00:15:55,659 --> 00:15:57,960 porque el examen que hacemos te evalúa a los dos. 324 00:15:59,059 --> 00:15:59,240 ¿Vale? 325 00:15:59,340 --> 00:16:02,220 Entonces, estaréis en segundo los que aprobéis aquí programación, 326 00:16:02,320 --> 00:16:04,019 porque entiendo que los que aprobéis programación, 327 00:16:04,700 --> 00:16:06,580 sí, porque aunque suspendierais bases de datos, 328 00:16:06,679 --> 00:16:08,100 que es la otra que igual se puede suspender, 329 00:16:08,820 --> 00:16:10,500 se puede pasar a segundo con bases de datos. 330 00:16:12,580 --> 00:16:13,259 Esperemos que no. 331 00:16:14,000 --> 00:16:14,240 ¿Vale? 332 00:16:16,200 --> 00:16:21,740 hombre, a ver 333 00:16:21,740 --> 00:16:24,139 no lo sé, o sea, cuántos han sido 334 00:16:24,139 --> 00:16:25,980 si tu pregunta es cuántos han sido 335 00:16:25,980 --> 00:16:27,700 el menor número de alumnos que he tenido 336 00:16:27,700 --> 00:16:29,100 aprobados de programación en junio 337 00:16:29,100 --> 00:16:31,700 pues al final siempre se levanta la mano 338 00:16:31,700 --> 00:16:33,879 y 10 alumnos 339 00:16:33,879 --> 00:16:35,539 yo creo que 8 340 00:16:35,539 --> 00:16:38,159 alumnos es lo mínimo que he tenido aprobados en junio 341 00:16:38,159 --> 00:16:39,759 después de ordinaria y extraordinaria 342 00:16:39,759 --> 00:16:41,899 es lo menos, que normalmente tengo alguno más 343 00:16:41,899 --> 00:16:44,960 pero este año no te va a pasar tampoco 344 00:16:44,960 --> 00:16:51,500 Venga 345 00:16:51,500 --> 00:16:52,840 A ver 346 00:16:52,840 --> 00:16:54,179 Vale 347 00:16:54,179 --> 00:16:59,620 ¿Por qué no os puede a vosotros 348 00:16:59,620 --> 00:17:01,700 Ahora en particular de cara al examen 349 00:17:01,700 --> 00:17:03,980 ¿Qué es lo que más os importa ahora 350 00:17:03,980 --> 00:17:04,859 De cara al examen? 351 00:17:05,720 --> 00:17:06,200 Silencio 352 00:17:06,200 --> 00:17:08,240 Ahora mismo 353 00:17:08,240 --> 00:17:11,220 No os vamos a evaluar para que decidáis 354 00:17:11,220 --> 00:17:12,680 ¿Qué colección elijo? 355 00:17:12,779 --> 00:17:13,640 ¿Un lis, un set? 356 00:17:13,700 --> 00:17:14,599 No, os vamos a decir 357 00:17:14,599 --> 00:17:16,779 hazme un list con no sé qué, hazme un set 358 00:17:16,779 --> 00:17:18,460 entonces ahora mismo de lo que vamos a evaluar 359 00:17:18,460 --> 00:17:20,319 es que sepáis usarlas 360 00:17:20,319 --> 00:17:22,700 ¿vale? que las uséis bien 361 00:17:22,700 --> 00:17:25,019 no tanto, ¿qué colección 362 00:17:25,019 --> 00:17:27,079 elegirías? que no sé qué, pero aún así tenéis criterios 363 00:17:27,079 --> 00:17:28,660 suficientes para elegirlo, ¿vale? dime 364 00:17:28,660 --> 00:17:30,400 si por ejemplo te dicen que use 365 00:17:30,400 --> 00:17:32,720 un headset, por ejemplo 366 00:17:32,720 --> 00:17:33,420 y yo no he usado 367 00:17:33,420 --> 00:17:36,460 pues está jodido, ya está 368 00:17:36,460 --> 00:17:38,259 una red y si uso un link 369 00:17:38,259 --> 00:17:40,839 pues tenés un cero, si yo te he puesto un ejercicio 370 00:17:40,839 --> 00:17:42,519 y te dije usar un headset y me lo haces 371 00:17:42,519 --> 00:17:44,039 con un triset, pues no vale 372 00:17:44,039 --> 00:17:45,220 no vale 373 00:17:45,220 --> 00:17:47,099 y no vale nada 374 00:17:47,099 --> 00:17:49,099 pues seguramente 375 00:17:49,099 --> 00:17:50,220 claro 376 00:17:50,220 --> 00:17:54,700 por ejemplo 377 00:17:54,700 --> 00:17:57,880 claro, a ver, te ibas a preguntar algo 378 00:17:57,880 --> 00:18:00,900 vale, a ver 379 00:18:00,900 --> 00:18:03,779 por ejemplo, pero tenéis criterio suficiente 380 00:18:03,779 --> 00:18:05,160 para saber cómo elegirlo 381 00:18:05,160 --> 00:18:07,559 o sea, una lista, por supuesto, es cuando me interesa la posición 382 00:18:07,559 --> 00:18:09,440 y cuando me puede interesar una posición 383 00:18:09,440 --> 00:18:11,900 por ejemplo, cuando el orden 384 00:18:11,900 --> 00:18:13,420 sea algo interesante 385 00:18:13,420 --> 00:18:14,539 en mi aplicación 386 00:18:14,539 --> 00:18:17,579 claro, pues por ejemplo 387 00:18:17,579 --> 00:18:18,720 imagínate que yo quiero 388 00:18:18,720 --> 00:18:20,339 tener aquí los pedidos 389 00:18:20,339 --> 00:18:22,220 ordenados por 390 00:18:22,220 --> 00:18:25,039 por lo que sea, por descripción 391 00:18:25,039 --> 00:18:26,599 por lo que sea, entonces la lista 392 00:18:26,599 --> 00:18:29,359 al ser una fila, porque no deja de ser una fila 393 00:18:29,359 --> 00:18:30,920 en la lista, el sentido 394 00:18:30,920 --> 00:18:32,799 lo del orden tiene un sentido 395 00:18:32,799 --> 00:18:35,279 no, pero tú ordenas 396 00:18:35,279 --> 00:18:36,539 como te da la gana, una cosa es 397 00:18:36,539 --> 00:18:39,920 claro, en la lista son todos en fila 398 00:18:39,920 --> 00:18:41,380 con lo cual hay un orden 399 00:18:41,380 --> 00:18:43,359 en la propia lista 400 00:18:43,359 --> 00:18:44,519 por el hecho de que no tiene una posición 401 00:18:44,519 --> 00:18:47,140 entonces, tú tienes ya la ventaja 402 00:18:47,140 --> 00:18:49,180 de que la iteración la puedes 403 00:18:49,180 --> 00:18:49,960 hacer en ese orden 404 00:18:49,960 --> 00:18:52,819 entonces, tiene sentido ahí plantearse 405 00:18:52,819 --> 00:18:54,539 cosas como, oye 406 00:18:54,539 --> 00:18:57,119 voy ahora a cambiar los elementos 407 00:18:57,119 --> 00:18:58,720 de la lista y ponerlos ordenados 408 00:18:58,720 --> 00:19:00,119 por orden de 409 00:19:00,119 --> 00:19:02,819 alfabético de nombre o de descripción 410 00:19:02,819 --> 00:19:04,960 pues nada, los tienes ahí cambiaditos 411 00:19:04,960 --> 00:19:07,039 que para eso está el método sort 412 00:19:07,039 --> 00:19:08,400 que alguna vez usamos 413 00:19:08,400 --> 00:19:11,079 que ahora vamos a usar otra vez para verlo 414 00:19:11,079 --> 00:19:12,259 hay listas y un método de sort, ¿no? 415 00:19:12,460 --> 00:19:14,460 Justo. Entonces, el orden, 416 00:19:15,000 --> 00:19:17,339 cuestiones relacionadas con el orden de la fila 417 00:19:17,339 --> 00:19:19,180 tienen sentido en una lista, en un set, ¿no? 418 00:19:19,240 --> 00:19:21,279 Ahí no hay ningún orden en un set, porque están todos a mogollón. 419 00:19:22,099 --> 00:19:23,099 Entonces, cuando 420 00:19:23,099 --> 00:19:25,039 cosas como, ideas como 421 00:19:25,039 --> 00:19:26,680 tener las cosas ordenadas 422 00:19:26,680 --> 00:19:28,660 importe a tu aplicación, 423 00:19:29,279 --> 00:19:30,779 pues dices, hombre, pues un list. 424 00:19:31,279 --> 00:19:33,119 Un list porque en mi aplicación tener las 425 00:19:33,119 --> 00:19:35,019 cosas ordenadas me puede interesar para la 426 00:19:35,019 --> 00:19:37,099 funcionalidad tal, por ejemplo. 427 00:19:37,700 --> 00:19:39,099 Pero si a mí tener las cosas 428 00:19:39,099 --> 00:19:41,220 ordenadas en filita 429 00:19:41,220 --> 00:19:42,759 me da igual 430 00:19:42,759 --> 00:19:44,619 realmente, pues entonces 431 00:19:44,619 --> 00:19:46,539 uso un set y ya está. 432 00:19:47,099 --> 00:19:49,420 ¿Vale? Eso en cuanto a 433 00:19:49,420 --> 00:19:51,099 criterios de... 434 00:19:51,819 --> 00:19:52,140 ¿Vale? 435 00:19:54,539 --> 00:19:56,809 La lista 436 00:19:56,809 --> 00:19:58,029 también, ¿qué ventaja tiene? 437 00:19:58,670 --> 00:20:00,549 Hombre, que tú puedes recuperar 438 00:20:00,549 --> 00:20:02,369 por posición. Imagínate 439 00:20:02,369 --> 00:20:04,329 que tienes la lista ordenada por ID 440 00:20:04,329 --> 00:20:06,329 y tienes un, dos, tres, cuatro y cinco. 441 00:20:06,490 --> 00:20:08,529 Y dices, oye, quiero el cinco. Pues dices 442 00:20:08,529 --> 00:20:10,930 Get, el de posición 5, y ya lo tienes 443 00:20:10,930 --> 00:20:13,009 Entonces, el que los elementos en la lista 444 00:20:13,009 --> 00:20:15,089 Estén uno detrás de otro, cada uno con un numerito 445 00:20:15,089 --> 00:20:16,890 Que yo soy el 0, yo soy el 1, yo soy el 2 446 00:20:16,890 --> 00:20:19,130 En orden, puede facilitarte 447 00:20:19,130 --> 00:20:21,130 Algunas cosas, en función de las 448 00:20:21,130 --> 00:20:22,410 Funcionalidades que tú tengas que hacer 449 00:20:22,410 --> 00:20:24,750 Entre ellas, esto que digo 450 00:20:24,750 --> 00:20:26,690 Tener un orden, para que luego al recorrer 451 00:20:26,690 --> 00:20:27,910 Tengas tú un listado en orden 452 00:20:27,910 --> 00:20:31,170 O recuperar por posición, si es que sabes 453 00:20:31,170 --> 00:20:32,829 En qué posición está el que te interesa 454 00:20:32,829 --> 00:20:35,190 Entonces, ese tipo de cosas, si importan 455 00:20:35,190 --> 00:20:36,789 En tu aplicación 456 00:20:36,789 --> 00:20:39,309 por la naturaleza de los objetos 457 00:20:39,309 --> 00:20:40,309 con los que trabajas, 458 00:20:41,109 --> 00:20:42,769 pues genial, coges un list y ya está. 459 00:20:42,910 --> 00:20:44,470 Si eso no importa nada y da lo mismo, 460 00:20:44,650 --> 00:20:47,089 pues coges un set, todos ahí y se acabó. 461 00:20:47,789 --> 00:20:48,769 Vale, pues entonces, 462 00:20:49,390 --> 00:20:50,250 listas. 463 00:20:50,809 --> 00:20:52,609 Listas hemos decidido, aquí tienen un orden, 464 00:20:52,690 --> 00:20:55,269 nos importa. Implementaciones, ArrayList y LinkList. 465 00:20:55,829 --> 00:20:57,390 Las dos se usan 466 00:20:57,390 --> 00:20:58,410 exactamente igual. 467 00:21:00,690 --> 00:21:01,130 Diferencias, 468 00:21:01,130 --> 00:21:02,569 cómo funcionan por dentro. 469 00:21:02,890 --> 00:21:05,309 Nada más, ArrayList, ya sabemos que los elementos están en un Array 470 00:21:05,309 --> 00:21:07,509 y el ArrayList se encarga de hacer sus 471 00:21:07,509 --> 00:21:09,529 hechos y desechos. Y el LinkedList 472 00:21:09,529 --> 00:21:11,309 es la lista enlazada que hemos programado. 473 00:21:11,569 --> 00:21:13,809 Pero funcionan igual. Entonces, ahora ya 474 00:21:13,809 --> 00:21:15,589 en mi main de pruebas este. 475 00:21:19,750 --> 00:21:21,490 ¿Vale? Espera, lo voy a poner 476 00:21:21,490 --> 00:21:22,490 un método aparte. 477 00:21:31,119 --> 00:21:32,180 Prueba listas. 478 00:21:33,119 --> 00:21:34,960 ¿Vale? Pues yo me quiero hacer una lista 479 00:21:34,960 --> 00:21:37,279 de pedidos. Repito, 480 00:21:38,400 --> 00:21:39,039 yo me puedo 481 00:21:39,039 --> 00:21:40,940 hacer esto. ¿Vale? 482 00:21:41,079 --> 00:21:42,420 ¿Cómo le gusta usar la lista? 483 00:21:42,640 --> 00:21:45,980 Sí, es una manía 484 00:21:45,980 --> 00:21:47,420 ¿Es bueno o malo? 485 00:21:47,980 --> 00:21:49,559 Es bueno y malo 486 00:21:49,559 --> 00:21:51,160 En este caso es bueno 487 00:21:51,160 --> 00:21:51,720 Porque 488 00:21:51,720 --> 00:21:55,700 De list a write list 489 00:21:55,700 --> 00:21:56,700 Hay solo un salto 490 00:21:56,700 --> 00:21:58,440 No tiene mucho 491 00:21:58,440 --> 00:21:59,779 Pero 492 00:21:59,779 --> 00:22:04,539 Sí, porque si yo pongo aquí 493 00:22:04,539 --> 00:22:06,420 Ahora incidimos en ello 494 00:22:06,420 --> 00:22:08,440 Pero vamos de nuevo a lo de genérico 495 00:22:08,440 --> 00:22:10,559 Cada vez que me acuerdo que William me lo preguntó ayer 496 00:22:10,559 --> 00:22:11,619 Me vuelvo a poner nerviosa 497 00:22:11,619 --> 00:22:31,440 A ver, podemos hacerlo así, ¿vale? Ya sabemos la implicación que tiene, ¿verdad? Sin parametrizar que en pedidos puedo meter lo que me dé la gana. Puedo meter un numerito si quiero. No está pensada esta lista para meter numeritos, está pensada para meter objetos pedidos. 498 00:22:31,440 --> 00:22:35,420 sí, ya vale 499 00:22:35,420 --> 00:22:37,559 pero si yo quiero una lista 500 00:22:37,559 --> 00:22:38,299 de pedidos 501 00:22:38,299 --> 00:22:41,720 normalmente yo organizo los datos 502 00:22:41,720 --> 00:22:43,380 de manera un poquito homogénea 503 00:22:43,380 --> 00:22:44,779 no todos a mogollón 504 00:22:44,779 --> 00:22:47,839 en el mismo sitio, es como las bases de datos 505 00:22:47,839 --> 00:22:49,339 tú no haces una tabla 506 00:22:49,339 --> 00:22:51,400 con un montón de campos y ahí hay registros 507 00:22:51,400 --> 00:22:53,119 pero a este registro le interesan estos campos 508 00:22:53,119 --> 00:22:55,599 no, te haces un diseño de base 509 00:22:55,599 --> 00:22:57,599 de datos lo más desacoplado posible 510 00:22:57,599 --> 00:22:59,180 cada tablita significa su cosa 511 00:22:59,180 --> 00:23:01,660 pues aquí es lo mismo, tú te haces tus colecciones 512 00:23:01,660 --> 00:23:03,759 y cada colección es para un tipo 513 00:23:03,759 --> 00:23:05,799 de objetos, porque si no lo haces así 514 00:23:05,799 --> 00:23:07,779 te sale un galimatías de aplicación 515 00:23:07,779 --> 00:23:09,799 entonces no es este el uso que solemos 516 00:23:09,799 --> 00:23:11,579 hacer, sino parametrizando la lista 517 00:23:11,579 --> 00:23:13,640 y diciendo, eh ojo 518 00:23:13,640 --> 00:23:15,140 que yo lo que quiero es guardar pedidos 519 00:23:15,140 --> 00:23:17,759 y para eso hago esto 520 00:23:17,759 --> 00:23:19,980 vale, repito 521 00:23:19,980 --> 00:23:21,779 aquí lo mismo 522 00:23:21,779 --> 00:23:24,339 puedo poner la super clase 523 00:23:24,339 --> 00:23:26,140 y si pongo la super clase 524 00:23:26,140 --> 00:23:28,220 y a mí me da la gana de repente cambiar 525 00:23:28,220 --> 00:23:30,779 porque digo, uy, espérate, ahora me interesa 526 00:23:30,779 --> 00:23:31,740 más una linked list 527 00:23:31,740 --> 00:23:33,380 pues cambio 528 00:23:33,380 --> 00:23:35,799 y no pasa nada 529 00:23:35,799 --> 00:23:38,380 no pasa nada, ¿vale? 530 00:23:39,200 --> 00:23:40,319 pero si aquí 531 00:23:40,319 --> 00:23:42,880 he comprometido 532 00:23:42,880 --> 00:23:43,500 ya el tipo 533 00:23:43,500 --> 00:23:46,000 y ahora decido que cambio 534 00:23:46,000 --> 00:23:48,480 y digo, no, me interesa más instanciar 535 00:23:48,480 --> 00:23:50,500 un array list, pues tengo que venirme aquí 536 00:23:50,500 --> 00:23:50,940 a cambiar 537 00:23:50,940 --> 00:23:54,539 aquí en este caso está en la misma línea, no es mucho trabajo 538 00:23:54,539 --> 00:23:56,759 pero podríamos estar en otra situación 539 00:23:56,759 --> 00:23:59,160 y es que estoy en el parámetro 540 00:23:59,160 --> 00:23:59,799 de un método 541 00:23:59,799 --> 00:24:03,579 y le estoy pasando de otro sitio 542 00:24:03,579 --> 00:24:05,119 entonces yo cambio 543 00:24:05,119 --> 00:24:07,460 la instancia que le paso y me tengo que ir a la declaración 544 00:24:07,460 --> 00:24:09,420 del método para cambiar 545 00:24:09,420 --> 00:24:11,180 el tipo de dato que está en el método 546 00:24:11,180 --> 00:24:13,640 entonces cuando es un parámetro de un método 547 00:24:13,640 --> 00:24:15,279 cuando es un parámetro de un método 548 00:24:15,279 --> 00:24:17,579 aquí sí que tiene especial trascendencia 549 00:24:17,579 --> 00:24:21,369 ponerlo como la super clase 550 00:24:21,369 --> 00:24:22,829 porque 551 00:24:22,829 --> 00:24:24,549 a saber quién me va a llamar y de dónde 552 00:24:24,549 --> 00:24:27,130 a lo mejor a uno le interesa pasarme una release 553 00:24:27,130 --> 00:24:29,470 que a lo mejor a otro le interesa pasarme un linked list 554 00:24:29,470 --> 00:24:31,430 es que no lo sé, porque quienes me van a llamar a mí 555 00:24:31,430 --> 00:24:32,910 a saber dónde están 556 00:24:32,910 --> 00:24:34,910 claro, si el método es independiente te da igual 557 00:24:34,910 --> 00:24:35,910 claro, entonces 558 00:24:35,910 --> 00:24:39,150 a la hora de hacer parámetros de los métodos 559 00:24:39,150 --> 00:24:41,349 aquí sí, cuanto más super clase 560 00:24:41,349 --> 00:24:42,789 seas, mejor 561 00:24:42,789 --> 00:24:45,250 porque más les dejas a cualquiera 562 00:24:45,250 --> 00:24:47,130 les dejas a los array list llamarte 563 00:24:47,130 --> 00:24:48,190 les dejas a los linked list 564 00:24:48,190 --> 00:24:50,250 pero si yo en parámetro del método 565 00:24:50,250 --> 00:24:52,930 solo pongo esto, solo dejo 566 00:24:52,930 --> 00:24:54,890 llamarme a los que hayan instanciado 567 00:24:54,890 --> 00:24:56,190 como linked list, con lo cual 568 00:24:56,190 --> 00:24:59,490 entonces aquí es donde puede tener más trascendencia 569 00:24:59,490 --> 00:25:01,029 si lo declaras como parámetro de método 570 00:25:01,029 --> 00:25:03,269 ¿vale? pero aquí 571 00:25:03,269 --> 00:25:05,150 en este caso que estamos declarando a la vez que 572 00:25:05,150 --> 00:25:06,609 instanciamos donde estamos en la misma línea 573 00:25:06,609 --> 00:25:09,130 pero bueno, como yo efectivamente tengo 574 00:25:09,130 --> 00:25:10,890 esa manía de siempre 575 00:25:10,890 --> 00:25:13,089 declarar como superclase e instanciar 576 00:25:13,089 --> 00:25:16,500 como subclase, claro 577 00:25:16,500 --> 00:25:18,539 ¿cuál es el problema de declarar 578 00:25:18,539 --> 00:25:20,740 como superclase e instanciar 579 00:25:20,740 --> 00:25:21,599 como subclase? 580 00:25:22,039 --> 00:25:24,859 que luego el compilador cuando yo llamo a métodos 581 00:25:24,859 --> 00:25:26,579 solo me 582 00:25:26,579 --> 00:25:28,420 permite llamar a los métodos de la 583 00:25:28,420 --> 00:25:29,559 superclase. 584 00:25:30,599 --> 00:25:31,779 Pero es que en list están 585 00:25:31,779 --> 00:25:34,680 todos los que están en ArrayList 586 00:25:34,680 --> 00:25:36,579 y LinkedList 587 00:25:36,579 --> 00:25:38,559 incorpora algunos. Que entonces ahí sí que 588 00:25:38,559 --> 00:25:40,440 tendría un problema, pero eso lo vemos ahora después. 589 00:25:40,660 --> 00:25:41,700 ¿Vale? Bueno, pues entonces 590 00:25:41,700 --> 00:25:44,680 aquí, repito, me da 591 00:25:44,680 --> 00:25:46,660 igual. Voy a 592 00:25:46,660 --> 00:25:47,720 hacer de hecho dos 593 00:25:47,720 --> 00:25:50,779 una con LinkedList 594 00:25:50,779 --> 00:25:52,519 y otra con Array. ¿Vale? 595 00:25:53,099 --> 00:25:53,920 Pedidos uno, 596 00:25:54,799 --> 00:25:56,160 pedidos dos. ¿Vale? 597 00:25:56,579 --> 00:26:06,720 Y para ver bien los métodos distintos de una y otra, las voy a instanciar como la suya. 598 00:26:07,400 --> 00:26:08,460 Las voy a instanciar como la suya. 599 00:26:08,519 --> 00:26:10,140 En el examen es que da igual como lo hagáis. 600 00:26:11,900 --> 00:26:16,039 Vale, pues entonces, ¿a qué me da igual usar esta colección que esta? 601 00:26:16,720 --> 00:26:18,519 Me da igual a efectos de uso. 602 00:26:19,099 --> 00:26:21,599 Porque la voy a usar igual, porque valen para lo mismo. 603 00:26:22,420 --> 00:26:25,960 Y aquí se trata simplemente de ver los métodos que me ofrece y ya está. 604 00:26:25,960 --> 00:26:29,680 Y yo ya elijo lo que quiero hacer. 605 00:26:31,019 --> 00:26:32,259 ¿Pero por qué no? 606 00:26:33,259 --> 00:26:35,740 A ver, y si no, ¿cómo vais a ver esto de aquí 607 00:26:35,740 --> 00:26:36,680 si no pongo la lupa? 608 00:26:37,980 --> 00:26:38,420 Hombre, 609 00:26:39,519 --> 00:26:40,900 para esto hace falta la lupa. 610 00:26:42,079 --> 00:26:43,579 Vale, entonces, me da igual 611 00:26:43,579 --> 00:26:45,740 que sea ArrayList que LinkedList. 612 00:26:46,220 --> 00:26:47,519 La mayoría de los métodos 613 00:26:47,519 --> 00:26:48,279 son comunes. 614 00:26:49,359 --> 00:26:51,440 Entonces, ahora estoy en ArrayList en particular. 615 00:26:52,380 --> 00:26:53,880 ArrayList puedo añadir 616 00:26:53,880 --> 00:26:55,660 un objeto entero. Eso ya lo sabemos, 617 00:26:55,799 --> 00:26:57,819 por supuesto. Puedo añadirlo 618 00:26:57,819 --> 00:26:58,920 en una posición. 619 00:26:58,920 --> 00:27:01,079 Si no lo añado en una posición 620 00:27:01,079 --> 00:27:02,160 Sabéis que se añade 621 00:27:02,160 --> 00:27:04,259 Después del último añadido 622 00:27:04,259 --> 00:27:06,440 Primero el 0, luego el 1, luego el 2 623 00:27:06,440 --> 00:27:08,700 Puedo añadir con add all 624 00:27:08,700 --> 00:27:10,640 Otra colección enterita que yo tenga 625 00:27:10,640 --> 00:27:13,039 Y se añaden todos, uno detrás del otro 626 00:27:13,039 --> 00:27:13,900 ¿Verdad? 627 00:27:14,960 --> 00:27:15,579 Es decir 628 00:27:15,579 --> 00:27:17,920 Si añades en una posición ya ocupada 629 00:27:17,920 --> 00:27:20,160 El método de añadir te desplaza 630 00:27:20,160 --> 00:27:21,759 Sí, te desplaza 631 00:27:21,759 --> 00:27:22,579 Hacia atrás 632 00:27:22,579 --> 00:27:25,500 Entonces, por ejemplo 633 00:27:25,500 --> 00:27:27,519 El método de esto es ver la descripción 634 00:27:27,519 --> 00:27:28,440 De lo que me hace cada uno 635 00:27:28,440 --> 00:27:31,099 si yo hago add all 636 00:27:31,099 --> 00:27:33,039 y le doy otra colección 637 00:27:33,039 --> 00:27:34,720 que puede ser incluso un set, puede ser 638 00:27:34,720 --> 00:27:36,920 cualquier colección, pues coge 639 00:27:36,920 --> 00:27:38,859 los elementos de esa colección, los va cogiendo 640 00:27:38,859 --> 00:27:40,960 uno tras otro y los va 641 00:27:40,960 --> 00:27:42,099 metiendo uno tras otro 642 00:27:42,099 --> 00:27:44,859 en la lista, entonces ya está 643 00:27:44,859 --> 00:27:46,500 se trata de ver los métodos que tiene 644 00:27:46,500 --> 00:27:49,059 en este caso ArrayList que es el que estamos mirando 645 00:27:49,059 --> 00:27:50,220 y son 646 00:27:50,220 --> 00:27:52,680 esos, no hay mucho 647 00:27:52,680 --> 00:27:55,079 no hay mucho 648 00:27:55,079 --> 00:27:56,019 aquí que 649 00:27:56,019 --> 00:27:57,740 que rascar 650 00:27:57,740 --> 00:28:02,039 pues añadir, añadir de golpe 651 00:28:02,039 --> 00:28:03,900 añadir muchos de golpe 652 00:28:03,900 --> 00:28:04,960 cualquier colección 653 00:28:04,960 --> 00:28:07,059 pero en medio, en una posición 654 00:28:07,059 --> 00:28:10,319 con lo cual se irán hacia atrás los que estaban en esa posición 655 00:28:10,319 --> 00:28:11,599 pero entonces se pierde 656 00:28:11,599 --> 00:28:13,799 no se pierde, se desplazan hacia atrás 657 00:28:13,799 --> 00:28:15,920 de todas formas las explicaciones siempre 658 00:28:15,920 --> 00:28:17,000 están aquí 659 00:28:17,000 --> 00:28:19,900 entonces, mira a ver, desplaza 660 00:28:19,900 --> 00:28:21,339 el elemento en esa posición 661 00:28:21,339 --> 00:28:22,980 ¿vale? 662 00:28:23,599 --> 00:28:25,000 ¿Para qué lo quieres poner en español? 663 00:28:25,619 --> 00:28:26,759 ¿Para qué lo quieres poner en español? 664 00:28:27,460 --> 00:28:29,779 Pues creas tú el método 665 00:28:29,779 --> 00:28:31,960 A ver, te lo traduces 666 00:28:31,960 --> 00:28:33,099 Pero vamos, quien no entienda 667 00:28:33,099 --> 00:28:34,880 Inglés hoy en día 668 00:28:34,880 --> 00:28:36,380 No, yo no digo por mí, digo por los demás 669 00:28:36,380 --> 00:28:36,859 Claro 670 00:28:36,859 --> 00:28:40,559 Vale 671 00:28:40,559 --> 00:28:44,359 Añadir el primero 672 00:28:44,359 --> 00:28:46,559 Añadir el último 673 00:28:46,559 --> 00:28:47,539 Añadir el último es 674 00:28:47,539 --> 00:28:48,920 Es el mismo método 675 00:28:48,920 --> 00:28:52,559 Barrer, limpiar la colección 676 00:28:53,119 --> 00:28:54,400 Y tirar a la basura 677 00:28:54,400 --> 00:28:56,240 Hacer un clon de ese objeto 678 00:28:56,240 --> 00:28:57,940 Bueno, es que este será de objeto, da igual 679 00:28:57,940 --> 00:28:59,059 Este 680 00:28:59,059 --> 00:29:01,119 Interesante 681 00:29:01,119 --> 00:29:02,940 El contains 682 00:29:02,940 --> 00:29:05,779 Método interesante 683 00:29:05,779 --> 00:29:06,640 ¿Vale? 684 00:29:07,339 --> 00:29:08,880 Le pasas un objeto 685 00:29:08,880 --> 00:29:11,759 Y te dice si existe un objeto 686 00:29:11,759 --> 00:29:13,440 Igual a ese en la colección 687 00:29:13,440 --> 00:29:15,000 ¿Vale? 688 00:29:20,000 --> 00:29:21,799 No, porque un equal sería 689 00:29:21,799 --> 00:29:23,779 Para verse una colección 690 00:29:23,779 --> 00:29:24,779 Es igual a otra, ¿no? 691 00:29:24,779 --> 00:29:26,000 Esto es para ver si dentro 692 00:29:26,000 --> 00:29:28,079 este es un método con things de la colección 693 00:29:28,079 --> 00:29:29,099 es decir 694 00:29:29,099 --> 00:29:30,500 vamos a 695 00:29:30,500 --> 00:29:33,559 claro, pasa por cada uno y en cuanto 696 00:29:33,559 --> 00:29:34,819 encuentre uno que es igual 697 00:29:34,819 --> 00:29:37,140 por ejemplo, en pedidos 1 698 00:29:37,140 --> 00:29:39,839 vamos a añadir un nuevo pedido 699 00:29:39,839 --> 00:29:41,940 vamos a añadir este pedido 700 00:29:41,940 --> 00:29:42,359 de aquí 701 00:29:42,359 --> 00:29:48,799 vale 702 00:29:48,799 --> 00:29:51,400 por ejemplo 703 00:29:51,400 --> 00:29:56,740 vale, claro 704 00:29:56,740 --> 00:29:58,859 por ejemplo, añadimos un nuevo pedido 705 00:29:58,859 --> 00:30:00,539 este de aquí, ahora 706 00:30:00,539 --> 00:30:02,759 ¿qué hace este 707 00:30:02,759 --> 00:30:05,059 método? pedidos 708 00:30:05,059 --> 00:30:06,740 1.contains 709 00:30:07,539 --> 00:30:08,759 y ahora yo le tengo 710 00:30:08,759 --> 00:30:10,059 que pasar un objeto pedido 711 00:30:10,059 --> 00:30:12,539 pues por ejemplo, voy a crear un objeto 712 00:30:12,539 --> 00:30:13,920 pedido por aquí, otro 713 00:30:13,920 --> 00:30:16,640 pedido p 714 00:30:16,640 --> 00:30:18,700 igual a 715 00:30:18,700 --> 00:30:19,900 new pedido 716 00:30:19,900 --> 00:30:22,160 le voy a poner 717 00:30:22,160 --> 00:30:24,700 menos el id 718 00:30:24,700 --> 00:30:25,859 todo lo demás 719 00:30:25,859 --> 00:30:27,519 cualquier cosa 720 00:30:27,519 --> 00:30:30,460 vale, este es el nuevo pedido 721 00:30:30,460 --> 00:30:32,279 que acabo de crear, con id1 722 00:30:32,279 --> 00:30:34,220 lo demás, y ahora 723 00:30:34,220 --> 00:30:37,440 si hacemos esto 724 00:30:37,440 --> 00:30:45,859 si hacemos esto, ya sabemos todos 725 00:30:45,859 --> 00:30:46,660 que nos va a salir 726 00:30:46,660 --> 00:30:49,599 true, porque 727 00:30:49,599 --> 00:30:51,759 pedidos1 contiene 728 00:30:51,759 --> 00:30:53,440 un pedido al menos 729 00:30:53,440 --> 00:30:55,240 1 al menos igual que p 730 00:30:55,240 --> 00:30:57,839 porque recordad que la igualdad 731 00:30:57,839 --> 00:30:59,200 la hemos implementado aquí 732 00:30:59,200 --> 00:31:00,859 y es por el id 733 00:31:00,859 --> 00:31:02,740 y este id es el mismo que este 734 00:31:02,740 --> 00:31:05,480 vale, si no hubiéramos 735 00:31:05,480 --> 00:31:07,440 implementado el jasco de equals 736 00:31:07,440 --> 00:31:09,599 pues saldría falso, lógicamente 737 00:31:09,599 --> 00:31:11,380 aquí me sale true 738 00:31:11,380 --> 00:31:12,400 espérate que 739 00:31:12,400 --> 00:31:15,400 algo me falta por aquí 740 00:31:15,400 --> 00:31:19,380 donde tengo aquí 741 00:31:19,380 --> 00:31:20,640 el, ah 742 00:31:20,640 --> 00:31:21,940 vale 743 00:31:21,940 --> 00:31:24,759 prueba listas 744 00:31:24,759 --> 00:31:27,869 ahí 745 00:31:27,869 --> 00:31:31,859 vale, a ver 746 00:31:31,859 --> 00:31:33,240 esto ya lo voy a comentar 747 00:31:33,240 --> 00:31:41,450 vale, pues aquí tenemos claro que si ejecutamos 748 00:31:41,450 --> 00:31:42,990 esto, me sale true 749 00:31:42,990 --> 00:31:43,670 está claro 750 00:31:43,670 --> 00:31:47,289 pero si hubiéramos comentado 751 00:31:47,289 --> 00:31:49,349 si esto no lo tuviéramos 752 00:31:49,349 --> 00:31:51,130 este equals 753 00:31:51,130 --> 00:31:52,750 no lo tuviéramos, porque la lista 754 00:31:52,750 --> 00:31:54,690 tanto Raylist como LinkedList 755 00:31:54,690 --> 00:31:56,789 solo tiran de equals 756 00:31:56,789 --> 00:31:59,289 solo, me da igual, para ver la igualdad 757 00:31:59,289 --> 00:32:01,190 solo, el hashcode como si no existiera 758 00:32:01,190 --> 00:32:01,769 le da lo mismo 759 00:32:01,769 --> 00:32:05,309 vale, entonces si este equals no existiera 760 00:32:05,309 --> 00:32:06,170 por id 761 00:32:06,170 --> 00:32:08,750 vale, que es como comprueba por id si este 762 00:32:08,750 --> 00:32:09,750 equals no existiera 763 00:32:09,750 --> 00:32:12,750 y yo ahora hago esto de aquí, pues lógicamente 764 00:32:12,750 --> 00:32:14,829 me sale false como era de esperar, porque no hay 765 00:32:14,829 --> 00:32:15,809 un pedido igual a este 766 00:32:15,809 --> 00:32:18,549 porque la igualdad es la dirección de memoria 767 00:32:18,549 --> 00:32:20,589 y la dirección de memoria de p, no es la dirección de memoria 768 00:32:20,589 --> 00:32:21,230 del que está en la lista 769 00:32:21,230 --> 00:32:23,390 claro, vale 770 00:32:23,390 --> 00:32:26,450 entonces, importante 771 00:32:26,450 --> 00:32:27,990 la igualdad 772 00:32:27,990 --> 00:32:30,769 en las clases list, array list 773 00:32:30,769 --> 00:32:32,869 linked list, se hace solo 774 00:32:32,869 --> 00:32:34,789 basada en el equal, solo, el hash code 775 00:32:34,789 --> 00:32:35,890 no sobra 776 00:32:35,890 --> 00:32:38,769 vale, pues el contains 777 00:32:38,769 --> 00:32:40,890 todo esto venía a cuento, de que más métodos 778 00:32:40,890 --> 00:32:42,849 interesante tiene list, array list 779 00:32:42,849 --> 00:32:53,549 en este caso, pues contains 780 00:32:53,549 --> 00:32:55,529 que ya lo tenemos claro, contains 781 00:32:55,529 --> 00:32:57,250 all es lo mismo, pero le pasas 782 00:32:57,250 --> 00:32:59,369 una colección entera de objetos, y te dice 783 00:32:59,369 --> 00:33:01,369 si contiene objetos iguales 784 00:33:01,890 --> 00:33:03,549 al menos uno igual 785 00:33:03,549 --> 00:33:05,609 a todos y cada uno de ellos 786 00:33:05,609 --> 00:33:07,490 aquí, bueno, es 787 00:33:07,490 --> 00:33:11,089 get 788 00:33:11,089 --> 00:33:12,609 ¿vale? 789 00:33:16,460 --> 00:33:18,400 get, este es el que 790 00:33:18,400 --> 00:33:20,420 está en listas que no está en conjuntos 791 00:33:20,420 --> 00:33:22,460 que es recuperar por posición 792 00:33:22,460 --> 00:33:23,519 ¿vale? 793 00:33:24,279 --> 00:33:25,579 ¿qué me permite el get? 794 00:33:26,359 --> 00:33:28,359 pues iterar con un for de índice 795 00:33:28,359 --> 00:33:30,420 el get, este get por posición es el que no 796 00:33:30,420 --> 00:33:32,319 está en conjuntos, entonces 797 00:33:32,319 --> 00:33:34,619 vamos a suponer 798 00:33:34,619 --> 00:33:36,420 que yo aquí en pedidos le vamos 799 00:33:36,420 --> 00:33:36,960 a meter 800 00:33:36,960 --> 00:33:40,039 un par de ellos por lo menos 801 00:33:40,039 --> 00:33:49,180 este 802 00:33:49,180 --> 00:33:51,220 vale 803 00:33:51,220 --> 00:33:53,559 entonces podemos iterar 804 00:33:53,559 --> 00:33:56,039 como si fuera casi un array con un for de índice 805 00:33:56,039 --> 00:33:57,880 desde igual a 0 806 00:33:57,880 --> 00:33:59,539 mientras si sea menor que 807 00:33:59,539 --> 00:34:01,279 pedidos 808 00:34:01,279 --> 00:34:03,700 1.6 que es el método 809 00:34:03,700 --> 00:34:05,220 para el tamaño de una colección 810 00:34:05,220 --> 00:34:06,819 incrementando y 811 00:34:06,819 --> 00:34:08,579 pues ahora ya 812 00:34:08,579 --> 00:34:11,480 puedo mostrar 813 00:34:11,480 --> 00:34:12,400 pues lo que quiera 814 00:34:12,400 --> 00:34:15,539 pues pedidos 1.get 815 00:34:15,539 --> 00:34:17,619 de y 816 00:34:17,619 --> 00:34:19,860 porque el get es el que me saca por posición 817 00:34:19,860 --> 00:34:21,719 y aquí pues lo que 818 00:34:21,719 --> 00:34:23,960 yo quiera mostrar, como no tengo un toString 819 00:34:23,960 --> 00:34:25,900 pues bueno, voy a mostrar la descripción 820 00:34:25,900 --> 00:34:26,400 por ejemplo 821 00:34:26,400 --> 00:34:28,880 vale, entonces 822 00:34:28,880 --> 00:34:31,980 esto me permite hacer un recorrido 823 00:34:31,980 --> 00:34:34,019 con for de índice y que ventaja tiene 824 00:34:34,019 --> 00:34:37,860 pues que me puedo parar, no tengo por qué recorrer 825 00:34:37,860 --> 00:34:39,820 la entera, puedo empezar en lugar de encero 826 00:34:39,820 --> 00:34:42,159 en la posición que yo quiera, puedo acabar antes 827 00:34:42,159 --> 00:34:44,019 el recorrer con índice 828 00:34:44,019 --> 00:34:45,820 me permite elegir 829 00:34:45,820 --> 00:34:48,019 mi recorrido, si lo hago por toda la colección 830 00:34:48,019 --> 00:34:50,400 lo hago en parte, etcétera 831 00:34:50,400 --> 00:34:50,800 vale 832 00:34:50,800 --> 00:34:54,079 aquí pues efectivamente 833 00:34:54,079 --> 00:34:55,719 recorremos y aquí lo tenemos 834 00:34:55,719 --> 00:34:56,360 los dos 835 00:34:56,360 --> 00:34:58,039 vale 836 00:34:58,039 --> 00:35:01,619 pero también puedo recorrer con un for each 837 00:35:01,619 --> 00:35:03,019 como los arrays 838 00:35:03,019 --> 00:35:05,579 y en ese caso pues recorrería así 839 00:35:05,579 --> 00:35:08,139 para cada pedido 840 00:35:08,139 --> 00:35:10,320 en 841 00:35:10,320 --> 00:35:12,719 pedidos 842 00:35:12,719 --> 00:35:19,309 pues ped 843 00:35:19,309 --> 00:35:22,010 punto de descripción 844 00:35:22,010 --> 00:35:22,889 vale 845 00:35:22,889 --> 00:35:26,369 entonces también puedo recorrerla con un for each 846 00:35:26,369 --> 00:35:28,650 pero si la recorro con un for each 847 00:35:28,650 --> 00:35:30,090 tengo el problema 848 00:35:30,090 --> 00:35:31,369 que ya tenemos de los for each 849 00:35:31,369 --> 00:35:34,329 que aquí no puedo elegir 850 00:35:34,329 --> 00:35:36,349 donde empiezo y donde acabo el recorrido 851 00:35:36,349 --> 00:35:38,090 se hace al completo 852 00:35:38,090 --> 00:35:40,170 no como aquí que yo puedo elegir 853 00:35:40,170 --> 00:35:41,809 con el índice, se hace al completo 854 00:35:41,809 --> 00:35:43,250 vale 855 00:35:43,250 --> 00:35:45,590 pero el recorrido lo hago igualmente 856 00:35:45,590 --> 00:35:48,050 y como veis además en el orden al que inserté 857 00:35:48,050 --> 00:35:49,650 lógicamente porque tienen orden 858 00:35:49,650 --> 00:35:51,210 ¿vale? 859 00:36:01,230 --> 00:36:01,909 métodos 860 00:36:01,909 --> 00:36:04,250 más métodos de ArrayList 861 00:36:04,250 --> 00:36:09,059 que nos interesen 862 00:36:09,059 --> 00:36:11,280 porque no se trata de verlos todos 863 00:36:11,280 --> 00:36:13,900 lógicamente, pues eso ya lo podéis ver vosotros 864 00:36:13,900 --> 00:36:16,139 pues 865 00:36:16,139 --> 00:36:19,420 bien, te hemos visto recorrer 866 00:36:19,420 --> 00:36:21,360 sácame el primero 867 00:36:21,360 --> 00:36:23,780 sácame el último, estos son heredados de 868 00:36:23,780 --> 00:36:25,380 object, nada, este 869 00:36:25,380 --> 00:36:27,260 interesante también 870 00:36:27,260 --> 00:36:35,199 te devuelve en qué posición está el primer objeto que encuentre igual a otro, ¿vale? 871 00:36:36,159 --> 00:36:40,039 El index of también es interesante, ¿vale? 872 00:36:42,659 --> 00:36:48,320 Index of, por ejemplo, si nosotros usamos el index of aquí, 873 00:36:48,920 --> 00:36:51,559 por ejemplo, vamos a hacernos este pedido P que ya lo tenemos. 874 00:36:51,559 --> 00:36:57,559 Si yo ahora llamo a pedido y le digo, oye, index of P, 875 00:36:57,559 --> 00:37:08,539 p pues que me va a mostrar esto que me va a devolver lo vamos a mostrar lo que me devuelve 876 00:37:09,840 --> 00:37:16,079 pues me va a devolver y voy a mostrar la primera posición en la que ha encontrado dentro de esta 877 00:37:16,079 --> 00:37:24,079 colección un objeto igual a este según el criterio de igualdad en mi caso p tiene índice 1 luego me 878 00:37:24,079 --> 00:37:29,440 ha de volver la posición 0 porque es donde he insertado yo el objeto con índice 1 lo 879 00:37:29,440 --> 00:37:31,300 insertado el primero, luego está en la 0 880 00:37:31,300 --> 00:37:32,480 ¿vale? 881 00:37:33,159 --> 00:37:35,639 entonces me va a devolver 0 cuando ejecute 882 00:37:35,639 --> 00:37:36,059 esto 883 00:37:36,059 --> 00:37:39,139 y aquí está el 0 884 00:37:39,139 --> 00:37:40,760 ¿vale? si 885 00:37:40,760 --> 00:37:43,039 un segundín 886 00:37:43,039 --> 00:37:45,219 si aquí ap un segundo 887 00:37:45,219 --> 00:37:46,440 lo cambiara por 888 00:37:46,440 --> 00:37:49,260 justo 889 00:37:49,260 --> 00:37:50,659 claro, cuando lleguemos a la r 890 00:37:50,659 --> 00:37:53,280 si lo vuelvo a 1 891 00:37:53,280 --> 00:37:55,039 ¿por qué le he puesto el de índice 2? pues 892 00:37:55,039 --> 00:37:57,599 el de índice 2 te lo he encontrado en la posición 1 893 00:37:57,599 --> 00:37:59,619 entonces todas estas cosas relacionadas con las posiciones 894 00:37:59,619 --> 00:38:02,559 nos pueden facilitar 895 00:38:02,559 --> 00:38:03,039 la vida 896 00:38:03,039 --> 00:38:05,199 si usamos vistas 897 00:38:05,199 --> 00:38:07,139 y en conjuntos todo esto no está 898 00:38:07,139 --> 00:38:09,219 todos los metros relacionados con posiciones en conjuntos no está 899 00:38:09,219 --> 00:38:11,079 al final te da igual la posición porque borras 900 00:38:11,079 --> 00:38:13,559 primero que tengas el criterio de igualdad y ya está 901 00:38:13,559 --> 00:38:16,000 ya pero al no tener 902 00:38:16,000 --> 00:38:17,019 la ayuda de la posición 903 00:38:17,019 --> 00:38:18,800 tienes que iterar 904 00:38:18,800 --> 00:38:21,420 aquí una vez que has encontrado la posición 905 00:38:21,420 --> 00:38:23,400 el elemento puedes con él borrarlo 906 00:38:23,400 --> 00:38:23,920 lo que quieras 907 00:38:23,920 --> 00:38:27,480 no porque tienes el 908 00:38:27,480 --> 00:38:28,260 IndexOf, por ejemplo. 909 00:38:29,380 --> 00:38:29,900 Claro. 910 00:38:31,940 --> 00:38:32,800 Eso sí. 911 00:38:33,119 --> 00:38:34,119 Pero estamos hablando de que... 912 00:38:34,119 --> 00:38:35,800 Sí, pero tú de nuevo siempre estás 913 00:38:35,800 --> 00:38:37,280 en lo que hace por dentro. 914 00:38:37,780 --> 00:38:39,400 Estamos hablando de facilidad de código. 915 00:38:39,860 --> 00:38:42,019 Si por dentro son galimatías todas. 916 00:38:42,579 --> 00:38:43,239 Vamos a... 917 00:38:43,239 --> 00:38:44,980 ¿Qué te facilita la escritura de código? 918 00:38:45,219 --> 00:38:45,619 Nada más. 919 00:38:46,059 --> 00:38:46,699 ¿Vale? Nada más. 920 00:38:47,760 --> 00:38:48,860 Tú ibas a preguntar algo. 921 00:38:52,519 --> 00:38:53,039 IndexOf, 922 00:38:53,039 --> 00:38:55,039 tú le pasas un objeto 923 00:38:55,039 --> 00:38:56,699 y te devuelve 924 00:38:56,699 --> 00:38:58,960 la primera posición en la que 925 00:38:58,960 --> 00:39:01,280 encuentra un objeto igual a este 926 00:39:01,280 --> 00:39:02,420 en esta colección. 927 00:39:06,320 --> 00:39:07,440 Bueno, porque yo ahora he hecho 928 00:39:07,440 --> 00:39:09,099 una segunda prueba en la que le he puesto 929 00:39:09,099 --> 00:39:09,719 el 2 930 00:39:09,719 --> 00:39:12,400 a pedido. Entonces, 931 00:39:13,000 --> 00:39:15,159 la posición 2, o sea, el pedido 932 00:39:15,159 --> 00:39:17,280 con índice 2, lo he encontrado 933 00:39:17,280 --> 00:39:19,340 en la posición 1, porque es el segundo que metí. 934 00:39:20,139 --> 00:39:21,260 O sea, este está en la 935 00:39:21,260 --> 00:39:23,460 posición 0 y este en la posición... 936 00:39:23,460 --> 00:39:24,800 Eso. Vale. 937 00:39:25,039 --> 00:39:41,130 Entonces, el tener la posibilidad de jugar con las posiciones, pues es la que, por ejemplo, nos permite, ¿vale? 938 00:39:41,210 --> 00:39:44,650 Index of, ¿vale? 939 00:39:45,090 --> 00:39:48,309 El index of me devuelve la primera posición, dime. 940 00:39:58,809 --> 00:40:01,210 A ver, sí, saber programar con ellas. 941 00:40:01,670 --> 00:40:02,150 En general. 942 00:40:03,829 --> 00:40:09,130 Todo, salvo no te vamos a evaluar de que seleccione esto una u otra 943 00:40:09,130 --> 00:40:11,510 en función de criterios de diseño de mi aplicación. 944 00:40:12,030 --> 00:40:13,369 Pero todo lo demás sí. 945 00:40:15,530 --> 00:40:17,650 Todo lo demás, usarles correctamente, 946 00:40:18,170 --> 00:40:21,309 decidir qué métodos tienes que usar para conseguir lo que quieras, 947 00:40:21,429 --> 00:40:22,170 programar con ellas. 948 00:40:23,110 --> 00:40:23,630 ¿Vale? 949 00:40:24,170 --> 00:40:25,010 Vale, a ver. 950 00:40:27,690 --> 00:40:29,110 Seguimos con los métodos. 951 00:40:31,670 --> 00:40:34,829 index of te devuelve la primera 952 00:40:34,829 --> 00:40:36,469 posición, pero 953 00:40:36,469 --> 00:40:38,869 laxt iterator, esto lo vamos a dejar por ahora 954 00:40:38,869 --> 00:40:41,010 bueno, y SEMTI está claro, si la colección tiene elementos 955 00:40:41,010 --> 00:40:41,730 o está vacía 956 00:40:41,730 --> 00:40:43,969 la primera colección que cumpla 957 00:40:43,969 --> 00:40:47,250 laxt index of te devuelve 958 00:40:47,250 --> 00:40:48,949 index te devuelve el primero 959 00:40:48,949 --> 00:40:50,750 en el que ha encontrado igualdad, pues laxt 960 00:40:50,750 --> 00:40:53,070 index of te devuelve el último que ha encontrado igual 961 00:40:53,070 --> 00:40:55,230 de los iterator nos olvidamos 962 00:40:55,230 --> 00:40:56,989 por ahora, porque 963 00:40:56,989 --> 00:40:58,650 andamos escasitos de tiempo 964 00:40:58,650 --> 00:41:00,409 ahora cuando al final se nos da tiempo 965 00:41:00,409 --> 00:41:02,190 Vale 966 00:41:02,190 --> 00:41:04,369 Entonces el tema de los índices 967 00:41:04,369 --> 00:41:06,550 Nos ahorra el tema del borrar 968 00:41:06,550 --> 00:41:10,670 En una colección 969 00:41:10,670 --> 00:41:11,050 No 970 00:41:11,050 --> 00:41:13,090 Al menos yo no lo veo aquí 971 00:41:13,090 --> 00:41:16,369 Pero tú puedes hacer unos sucesivos 972 00:41:16,369 --> 00:41:17,570 Claro 973 00:41:17,570 --> 00:41:19,349 Tú te metes en un while y vas 974 00:41:19,349 --> 00:41:21,449 While get, while get, while get 975 00:41:21,449 --> 00:41:22,110 Y vas sacando 976 00:41:22,110 --> 00:41:24,670 Vale, remove 977 00:41:24,670 --> 00:41:25,969 Pues borras por posición 978 00:41:25,969 --> 00:41:28,230 Esto no lo tendrías en un set, lógicamente 979 00:41:28,230 --> 00:41:29,530 Porque en un set no hay posición 980 00:41:29,530 --> 00:41:32,449 El remove está sobrecargado 981 00:41:32,449 --> 00:41:33,909 Puedes borrar diciendo 982 00:41:33,909 --> 00:41:35,269 Bórrame el de posición 3 983 00:41:35,269 --> 00:41:37,369 O puedes borrar pasando en un objeto 984 00:41:37,369 --> 00:41:39,050 Son dos versiones distintas 985 00:41:39,050 --> 00:41:41,829 Claro, si tú le dices 986 00:41:41,829 --> 00:41:43,570 Bórrame este objeto 987 00:41:43,570 --> 00:41:46,110 Te borra el primero que encuentre 988 00:41:46,110 --> 00:41:48,110 Igual a ese, pero solo el primero 989 00:41:48,110 --> 00:41:49,130 ¿Vale? 990 00:41:50,329 --> 00:41:50,929 Es decir 991 00:41:50,929 --> 00:41:55,869 Si sabes la posición, sí 992 00:41:55,869 --> 00:41:58,630 Si quieres, claro, depende de lo que tú quieras hacer 993 00:41:58,630 --> 00:41:59,150 Por ejemplo 994 00:41:59,150 --> 00:42:02,369 Vamos a ver lo de los borrados ahora 995 00:42:02,369 --> 00:42:04,329 Por ejemplo, vamos a meter el primer objeto 996 00:42:04,329 --> 00:42:06,630 Este de aquí, lo vamos a meter dos veces 997 00:42:06,630 --> 00:42:09,070 En la posición 0 998 00:42:09,070 --> 00:42:10,309 Y en la posición 2 999 00:42:10,309 --> 00:42:12,190 El mismo objeto con el mismo índice 1000 00:42:12,190 --> 00:42:13,010 Ha metido dos veces 1001 00:42:13,010 --> 00:42:15,849 Entonces, y ahora 1002 00:42:15,849 --> 00:42:16,789 Este objeto P 1003 00:42:16,789 --> 00:42:19,250 Le vamos a dar uno 1004 00:42:19,250 --> 00:42:21,429 Vale, a ver 1005 00:42:21,429 --> 00:42:22,949 Atentos a esto 1006 00:42:22,949 --> 00:42:26,230 Vale, mi objeto P tiene el índice 1 1007 00:42:26,230 --> 00:42:27,829 Luego es igual al primero 1008 00:42:27,829 --> 00:42:30,309 y al tercero, es igual de posición 0 1009 00:42:30,309 --> 00:42:32,309 y al de posición, vale, pues vamos 1010 00:42:32,309 --> 00:42:33,570 a mandárselo a borrar 1011 00:42:33,570 --> 00:42:36,309 vamos a decir, pedidos1.remove 1012 00:42:36,909 --> 00:42:37,989 p 1013 00:42:37,989 --> 00:42:40,289 y ahora después de haberlo 1014 00:42:40,289 --> 00:42:41,610 borrado, vamos a volver a iterar 1015 00:42:41,610 --> 00:42:43,909 para recorrer la colección, a ver que tiene 1016 00:42:43,909 --> 00:42:46,329 habrá borrado 1017 00:42:46,329 --> 00:42:47,550 solo el primero 1018 00:42:47,550 --> 00:42:54,760 la colección 1019 00:42:54,760 --> 00:42:56,420 tenía bolis, gomas, bolis 1020 00:42:56,420 --> 00:42:57,780 y después del borrado 1021 00:42:57,780 --> 00:43:00,480 ha borrado solo el primero, ha borrado 1022 00:43:00,480 --> 00:43:02,659 el primero que se ha encontrado 1023 00:43:02,659 --> 00:43:04,900 igual, este remove 1024 00:43:04,900 --> 00:43:06,440 borra 1025 00:43:06,440 --> 00:43:14,789 solo el primero, vale 1026 00:43:14,789 --> 00:43:16,949 lo que pasa es que, si tú los quieres borrar 1027 00:43:16,949 --> 00:43:18,309 todos, tienes que meterlo en un bucle 1028 00:43:18,309 --> 00:43:19,949 pero tiene la deferencia 1029 00:43:19,949 --> 00:43:23,250 de devolverte 1030 00:43:23,250 --> 00:43:25,110 un boolean, como valor de control 1031 00:43:25,110 --> 00:43:27,150 que tú puedes usar o no, claro, que es true 1032 00:43:27,150 --> 00:43:28,969 si ha borrado alguno 1033 00:43:28,969 --> 00:43:30,349 o false y no encontró ninguno 1034 00:43:30,349 --> 00:43:33,190 entonces, esto es tan fácil 1035 00:43:33,190 --> 00:43:34,010 como hacer esto 1036 00:43:34,010 --> 00:43:36,150 bucle hasta que se haga. Justo. Esto es tan fácil 1037 00:43:36,150 --> 00:43:39,869 como hacer esto. Terminado. 1038 00:43:41,789 --> 00:43:43,429 Claro, porque ya te hace el bucle. 1039 00:43:43,530 --> 00:43:45,750 Claro. A ver, tú haces un while 1040 00:43:45,750 --> 00:43:47,710 y como condición 1041 00:43:47,710 --> 00:43:49,590 pones esto. Entonces, esto en el momento de 1042 00:43:49,590 --> 00:43:50,969 evaluarse ya se va a borrar. 1043 00:43:51,670 --> 00:43:53,409 Y te da a devolver true si borró uno. 1044 00:43:54,030 --> 00:43:55,650 Si borró uno, significa que 1045 00:43:55,650 --> 00:43:57,190 podría haber más. Entonces, 1046 00:43:57,630 --> 00:43:59,710 el while vuelve otra vez y te vuelve 1047 00:43:59,710 --> 00:44:01,610 a hacer el remove. Si te 1048 00:44:01,610 --> 00:44:03,530 vuelve a devolver true es porque borró uno. 1049 00:44:03,710 --> 00:44:05,409 Entonces, tú quieres que lo siga haciendo. 1050 00:44:05,710 --> 00:44:07,989 cuando ya haga un remove y te devuelva 1051 00:44:07,989 --> 00:44:09,590 falso porque ya no encontró ninguno 1052 00:44:09,590 --> 00:44:10,550 es que ya no hay más 1053 00:44:10,550 --> 00:44:13,590 entonces como este while no tiene cuerpo 1054 00:44:13,590 --> 00:44:15,809 este while en realidad es como 1055 00:44:15,809 --> 00:44:16,670 si yo lo dejara así 1056 00:44:16,670 --> 00:44:19,550 pues cuando un while se queda sin cuerpo 1057 00:44:19,550 --> 00:44:21,449 podéis cambiar esto por punto y coma 1058 00:44:21,449 --> 00:44:23,429 que queda más bonito, unas llaves vacías quedan muy feas 1059 00:44:23,429 --> 00:44:24,929 ¿vale? 1060 00:44:27,210 --> 00:44:29,289 ¿pero para qué quieres poner un break si no te hace ninguna falta? 1061 00:44:31,730 --> 00:44:33,030 es horrible 1062 00:44:33,030 --> 00:44:37,510 A ver 1063 00:44:37,510 --> 00:44:39,869 Y puedo poner 1064 00:44:39,869 --> 00:44:40,750 Pues yo que sé 1065 00:44:40,750 --> 00:44:43,369 Una imagen de Felipe González fumando 1066 00:44:43,369 --> 00:44:44,690 Lo que queráis 1067 00:44:44,690 --> 00:44:45,610 Pero para qué 1068 00:44:45,610 --> 00:44:50,269 Vale, entonces 1069 00:44:50,269 --> 00:44:52,030 Las llaves vacías 1070 00:44:52,030 --> 00:44:54,789 Las podéis utilizar por un punto y coma 1071 00:44:54,789 --> 00:44:56,329 Vale, luego este while 1072 00:44:56,329 --> 00:44:58,050 Lo habéis entendido, ¿verdad? 1073 00:44:58,050 --> 00:45:03,510 no lo pillo pero da igual 1074 00:45:03,510 --> 00:45:05,250 vale 1075 00:45:05,250 --> 00:45:07,070 sí, sí, lo he pillado 1076 00:45:07,070 --> 00:45:10,050 vale 1077 00:45:10,050 --> 00:45:13,750 no, no me cuentes más 1078 00:45:13,750 --> 00:45:14,889 porque hemos ido hasta 1079 00:45:14,889 --> 00:45:17,489 vale, habéis entendido que el ponerlo 1080 00:45:17,489 --> 00:45:19,329 en un while me permite borrarlos 1081 00:45:19,329 --> 00:45:21,389 todos uno tras otro, porque si yo no lo meto 1082 00:45:21,389 --> 00:45:23,230 en un while, me borra el primero que 1083 00:45:23,230 --> 00:45:24,969 encuentre y se acabó, vale 1084 00:45:24,969 --> 00:45:26,309 entonces 1085 00:45:26,309 --> 00:45:28,909 en un set 1086 00:45:28,909 --> 00:45:31,210 si esto fuera un set 1087 00:45:31,210 --> 00:45:32,670 yo podría ponerlo aquí en un while 1088 00:45:32,670 --> 00:45:34,170 pero es absurdo porque en un set 1089 00:45:34,170 --> 00:45:35,889 solo va a haber un objeto igual a p 1090 00:45:35,889 --> 00:45:36,630 solo va a haber uno 1091 00:45:36,630 --> 00:45:39,570 entonces da igual la cantidad de veces que haga yo remove 1092 00:45:39,570 --> 00:45:42,190 en un set solo hay un objeto como mucho igual 1093 00:45:42,190 --> 00:45:43,090 puede haber uno o ninguno 1094 00:45:43,090 --> 00:45:45,909 lo puedo meter en un while pero se va a ejecutar una vez como mucho 1095 00:45:45,909 --> 00:45:47,630 ¿vale? 1096 00:45:47,929 --> 00:45:48,889 pero no tiene sentido 1097 00:45:48,889 --> 00:45:49,929 entonces en un do while 1098 00:45:49,929 --> 00:45:54,150 efectivamente y con un break dentro 1099 00:45:54,150 --> 00:45:56,289 el break es lo que necesitamos 1100 00:45:56,289 --> 00:46:04,170 y poquitos métodos más tenemos que nos interesen 1101 00:46:04,170 --> 00:46:04,929 de la ArrayList 1102 00:46:04,929 --> 00:46:09,460 borrar 1103 00:46:09,460 --> 00:46:12,059 esto es programación funcional, lo olvidamos 1104 00:46:12,059 --> 00:46:16,659 si está vacía la colección 1105 00:46:16,659 --> 00:46:17,539 si no tiene elementos 1106 00:46:17,539 --> 00:46:18,659 sin ser nulo 1107 00:46:18,659 --> 00:46:19,639 claro 1108 00:46:19,639 --> 00:46:21,380 claro 1109 00:46:21,380 --> 00:46:53,889 Sí, sí, sí. 1110 00:46:53,909 --> 00:46:59,469 Qué triste 1111 00:46:59,469 --> 00:47:02,469 Sí, que podías 1112 00:47:02,469 --> 00:47:03,969 Ese método lo que tiene dentro es 1113 00:47:03,969 --> 00:47:05,929 Un size igual a cero, es lo mismo 1114 00:47:05,929 --> 00:47:08,449 Pero bueno, hay muchos métodos 1115 00:47:08,449 --> 00:47:10,210 Un montón, que son redundantes 1116 00:47:10,210 --> 00:47:12,929 Pero para que tengas tú posibilidades de hacer las cosas más bonitas 1117 00:47:12,929 --> 00:47:18,070 No, no le pasas nada 1118 00:47:18,070 --> 00:47:20,250 Clone te hace otro objeto 1119 00:47:20,250 --> 00:47:21,829 Idéntico a ese 1120 00:47:21,829 --> 00:47:23,610 En otra dirección te hace un clone 1121 00:47:23,610 --> 00:47:24,949 O sea, no le pasas ningún parámetro 1122 00:47:24,949 --> 00:47:26,289 Te hace un clone 1123 00:47:26,289 --> 00:47:29,389 Al que llama al método clone 1124 00:47:29,389 --> 00:47:31,329 Al que tú le pasas, no, al que llama al método 1125 00:47:31,329 --> 00:47:34,050 O sea, pedidos1.clone 1126 00:47:34,050 --> 00:47:36,090 Te devuelve un ArrayList 1127 00:47:36,090 --> 00:47:38,469 Copia idéntico al que llamó a clone 1128 00:47:38,469 --> 00:47:39,690 Claro, claro, pero tienes que guardar 1129 00:47:39,690 --> 00:47:41,829 Bueno, si no 1130 00:47:41,829 --> 00:47:43,530 Lo has perdido, claro, lógicamente 1131 00:47:43,530 --> 00:47:44,929 Como todos los métodos que te devuelven cosas 1132 00:47:44,929 --> 00:47:47,489 Claro, vale, entonces 1133 00:47:47,489 --> 00:47:49,210 Pues nada, ahí vamos aquí con el remove 1134 00:47:49,210 --> 00:47:51,010 Remove 1135 00:47:51,010 --> 00:47:53,230 Por índice, remove por objeto 1136 00:47:53,230 --> 00:47:54,369 Puedes borrar de golpe 1137 00:47:54,369 --> 00:47:57,070 Sí, sí, sí 1138 00:47:57,070 --> 00:48:00,510 Vale, Remusol 1139 00:48:00,510 --> 00:48:02,090 Pues le pasas una colección 1140 00:48:02,090 --> 00:48:04,909 Y te borra la primera copia 1141 00:48:04,909 --> 00:48:06,989 Que encuentra igual a todos y cada uno 1142 00:48:06,989 --> 00:48:07,769 De ellos 1143 00:48:07,769 --> 00:48:09,550 Te borra el primero 1144 00:48:09,550 --> 00:48:11,409 Te borra el último 1145 00:48:11,409 --> 00:48:15,050 ¿Vale? Esto es programación funcional 1146 00:48:15,050 --> 00:48:15,590 Entonces pasa 1147 00:48:15,590 --> 00:48:16,690 ¿Eh? 1148 00:48:18,050 --> 00:48:19,429 Reversed te da la vuelta 1149 00:48:19,429 --> 00:48:21,230 Retour 1150 00:48:21,230 --> 00:48:26,789 vale, te da la vuelta 1151 00:48:26,789 --> 00:48:42,230 y que otro 1152 00:48:42,230 --> 00:48:44,650 podemos sacar 1153 00:48:44,650 --> 00:48:45,829 para no perdernos 1154 00:48:45,829 --> 00:48:47,489 por ejemplo, el tuarray 1155 00:48:47,489 --> 00:48:50,269 puede ser interesante en un momento dado 1156 00:48:50,269 --> 00:48:52,710 el tuarray puede ser interesante 1157 00:48:52,710 --> 00:48:53,929 que es, te coges a lista 1158 00:48:53,929 --> 00:48:56,010 y te la pasas en un array 1159 00:48:56,010 --> 00:48:57,670 y te lo devuelve como array 1160 00:48:57,670 --> 00:49:00,710 claro, entonces que tú ya 1161 00:49:00,710 --> 00:49:02,170 que yo no quiero lista, yo arrays 1162 00:49:02,170 --> 00:49:04,530 es interesante, ¿vale? 1163 00:49:04,550 --> 00:49:06,730 el tuarray, y de todos estos métodos 1164 00:49:06,730 --> 00:49:08,710 pues con los que hemos visto y si habéis entendido 1165 00:49:08,710 --> 00:49:10,190 bien como se usan 1166 00:49:10,190 --> 00:49:12,429 pues es que poco más se puede hacer con listas 1167 00:49:12,429 --> 00:49:12,789 ¿vale? 1168 00:49:13,590 --> 00:49:16,150 ¿no puedes entrar en el método de revés y tal vez como funciona internamente? 1169 00:49:17,590 --> 00:49:18,750 ahora entramos si queréis 1170 00:49:18,750 --> 00:49:19,750 a ver 1171 00:49:19,750 --> 00:49:20,730 Sí, porque como uso un auxilio...