1 00:00:00,000 --> 00:00:09,230 a usarlas. Pues venga, vamos a hacernos una clasecita alumno, por ejemplo, para poder 2 00:00:09,230 --> 00:00:16,350 guardar objetos de un tipo más sofisticado que string o cualquier otra cosa. Venga, me 3 00:00:16,350 --> 00:00:23,050 voy a hacer un paquete, model para guardar las entidades y me voy a hacer un alumno. 4 00:00:23,050 --> 00:00:33,000 Venga, pues este alumno 5 00:00:33,000 --> 00:00:36,759 Se va a caracterizar 6 00:00:36,759 --> 00:00:38,939 Por su número de matrícula 7 00:00:38,939 --> 00:00:39,640 Por ejemplo 8 00:00:39,640 --> 00:00:47,899 ¿Vale? 9 00:00:49,039 --> 00:00:50,240 Su nombre 10 00:00:50,240 --> 00:00:59,070 Vamos a dejarle por ahora con esas dos propiedades 11 00:00:59,070 --> 00:00:59,450 Solo 12 00:00:59,450 --> 00:01:11,280 Tenemos un constructor 13 00:01:11,280 --> 00:01:16,019 dime 14 00:01:16,019 --> 00:01:38,640 bueno pues tenemos una aplicación para gestionar 15 00:01:38,640 --> 00:01:39,439 alumnos 16 00:01:39,439 --> 00:01:40,959 y ya está 17 00:01:40,959 --> 00:01:44,299 bueno vamos a ponerle ya una edad 18 00:01:44,299 --> 00:01:45,959 para poder hacer alguna operativa 19 00:01:45,959 --> 00:01:47,799 aunque sea de pues comparar edades 20 00:01:47,799 --> 00:01:48,599 o algo así 21 00:01:48,599 --> 00:02:05,590 entonces añado esto aquí al 22 00:02:05,590 --> 00:02:06,250 constructor 23 00:02:06,250 --> 00:02:13,900 y me falta el getty set de la edad 24 00:02:13,900 --> 00:02:23,669 bueno pues ya está 25 00:02:23,669 --> 00:02:26,189 tengo un alumno con tres propiedades y una aplicación 26 00:02:26,189 --> 00:02:27,870 que va a gestionar estos alumnos 27 00:02:27,870 --> 00:02:32,569 entonces la aplicación 28 00:02:32,569 --> 00:02:34,810 va a tener 29 00:02:34,810 --> 00:02:35,689 esto de aquí 30 00:02:35,689 --> 00:02:37,169 pues la aplicación va a tener 31 00:02:37,169 --> 00:02:39,389 un montón de alumnos 32 00:02:39,389 --> 00:02:40,789 entonces un montón de alumnos 33 00:02:40,789 --> 00:02:42,610 hasta ahora nosotros pues que hacíamos 34 00:02:42,610 --> 00:02:46,169 pues los metíamos todos en algo así 35 00:02:46,169 --> 00:02:48,840 vale 36 00:02:48,840 --> 00:02:50,879 los metíamos todos en algo así 37 00:02:50,879 --> 00:02:53,379 y aquí teníamos el problema efectivamente 38 00:02:53,379 --> 00:02:55,780 de que tenemos que comprometer 39 00:02:55,780 --> 00:02:56,879 el tamaño 40 00:02:56,879 --> 00:02:59,599 yo aquí tengo que decir si 100 41 00:02:59,599 --> 00:03:01,599 o cuantos, la solución que 42 00:03:01,599 --> 00:03:03,419 hacíamos, que nos 43 00:03:03,419 --> 00:03:05,280 implicaba escribir mucho código 44 00:03:05,280 --> 00:03:07,860 era decir, bueno, inicialmente 45 00:03:07,860 --> 00:03:09,560 me hago un array de 0 46 00:03:09,560 --> 00:03:11,580 posiciones, inicialmente de 0 47 00:03:11,580 --> 00:03:13,560 y cuando me quiera meter uno nuevo 48 00:03:13,560 --> 00:03:15,360 hago todo el rollo de hacer un auxiliar 49 00:03:15,360 --> 00:03:17,219 con una posición más, copiar 50 00:03:17,219 --> 00:03:19,280 añadir el nuevo y sustituir 51 00:03:19,280 --> 00:03:21,300 era la solución que usábamos 52 00:03:21,300 --> 00:03:23,340 para no comprometernos desde aquí al tamaño 53 00:03:23,340 --> 00:03:25,180 pero realmente, hombre 54 00:03:25,180 --> 00:03:27,460 el uso de los arrays cuando son 55 00:03:27,460 --> 00:03:29,419 eficientes, es si tú sabes 56 00:03:29,419 --> 00:03:31,500 un tamaño lo dices y el array se queda 57 00:03:31,500 --> 00:03:33,280 ya siempre quieto y ahora ya 58 00:03:33,280 --> 00:03:35,379 acceder por posición, recorrer 59 00:03:35,379 --> 00:03:37,159 es computacionalmente inmediato 60 00:03:37,159 --> 00:03:38,680 es lo más rápido y lo más eficiente 61 00:03:38,680 --> 00:03:41,080 no hay nada más eficiente que un array 62 00:03:41,080 --> 00:03:42,340 pero 63 00:03:42,340 --> 00:03:44,520 tienes que fijar aquí 64 00:03:44,520 --> 00:03:46,280 el número de posiciones 65 00:03:46,280 --> 00:03:49,659 y se van a quedar siempre las mismas 66 00:03:49,659 --> 00:03:51,340 no se puede cambiar, si tienes que 67 00:03:51,340 --> 00:03:52,479 tirar la basura y coger otro 68 00:03:52,479 --> 00:03:54,740 ya se ha perdido la eficiencia computacional 69 00:03:54,740 --> 00:03:56,759 porque ya estás tirando la basura y cogiendo lo otro 70 00:03:56,759 --> 00:03:58,599 bueno pues entonces 71 00:03:58,599 --> 00:04:00,800 esto es lo que hacíamos hasta ahora 72 00:04:00,800 --> 00:04:02,419 ahora ya 73 00:04:02,419 --> 00:04:04,520 no tenemos por qué coger una 74 00:04:04,520 --> 00:04:06,099 una RAI obligatoriamente 75 00:04:06,099 --> 00:04:08,960 si sabemos que va a haber 20 y son 20 76 00:04:08,960 --> 00:04:10,060 y punto pelota 77 00:04:10,060 --> 00:04:12,740 cogeríamos una RAI, eso es lo que cogeríamos 78 00:04:12,740 --> 00:04:13,120 siempre 79 00:04:13,120 --> 00:04:16,439 pero en nuestro caso, no sé, a lo mejor 80 00:04:16,439 --> 00:04:18,639 un año tengo 17, luego se 81 00:04:18,639 --> 00:04:20,959 matriculan 4 de golpe, luego se van 3 82 00:04:20,959 --> 00:04:22,699 no lo sé, va a ser 83 00:04:22,699 --> 00:04:24,500 un número de alumnos variable, pues entonces 84 00:04:24,500 --> 00:04:26,519 cogeríamos alguna de las clases 85 00:04:26,519 --> 00:04:28,699 colección, que ya están hechas 86 00:04:28,699 --> 00:04:31,079 ¿cuáles? 87 00:04:31,660 --> 00:04:33,439 ahora mismo estamos viendo listas 88 00:04:33,439 --> 00:04:34,699 pues de listas 89 00:04:34,699 --> 00:04:36,180 cogeríamos una lista 90 00:04:36,180 --> 00:04:39,000 pues venga, entonces yo puedo 91 00:04:39,000 --> 00:04:39,959 hacer esto 92 00:04:39,959 --> 00:04:42,399 ¿la lista de qué tipo va a ser? 93 00:04:42,980 --> 00:04:44,540 va a ser una lista de tipo 94 00:04:44,540 --> 00:04:45,459 alumno 95 00:04:45,459 --> 00:04:48,139 pues me comprometo el tipo 96 00:04:48,139 --> 00:04:50,819 porque ya hemos visto que lista 97 00:04:50,819 --> 00:04:53,319 es genérica 98 00:04:53,319 --> 00:04:55,079 lista te dice, oye cuando me instancies 99 00:04:55,079 --> 00:05:00,920 instancias, dime qué tipo de dato me vas a meter dentro, ¿vale? 100 00:05:00,939 --> 00:05:03,000 Porque esto es una clase genérica, que lo vimos ayer. 101 00:05:03,339 --> 00:05:08,639 Una clase que se declara en función de un tipo que todavía está por comprometer, no se sabe. 102 00:05:09,680 --> 00:05:13,920 Y cuando tú ya instancias un ejemplo concreto, cuando lo instancias, dices, 103 00:05:14,060 --> 00:05:17,759 oye, dime ya cuál, porque ahora ya sí que estás creando algo real. 104 00:05:17,920 --> 00:05:20,360 Estás creando algo real, tienes que decir qué tipo es. 105 00:05:20,420 --> 00:05:23,319 No puedes crear algo real y dejarlo en el aire. 106 00:05:23,319 --> 00:05:26,160 solo dejamos las cosas en el aire cuando estamos declarando 107 00:05:26,160 --> 00:05:27,899 cuando estamos ya creando 108 00:05:27,899 --> 00:05:28,980 no podemos dejarlo en el aire 109 00:05:28,980 --> 00:05:31,100 bueno, pues aquí en mi main 110 00:05:31,100 --> 00:05:34,100 estamos ya creando una lista 111 00:05:34,100 --> 00:05:36,240 pues tenemos que decir de qué tipo va a ser 112 00:05:36,240 --> 00:05:37,939 y lo decimos de esta manera 113 00:05:37,939 --> 00:05:38,819 poniendo ahí 114 00:05:38,819 --> 00:05:42,079 vale, entonces mi lista de alumnos 115 00:05:42,079 --> 00:05:43,100 la declaro como sea 116 00:05:43,100 --> 00:05:45,819 entonces con esto he hecho la declaración sin más 117 00:05:45,819 --> 00:05:47,759 he declarado el objeto 118 00:05:47,759 --> 00:05:49,699 pero no lo he creado, he dicho 119 00:05:49,699 --> 00:05:51,560 mi referencia alumnos 120 00:05:51,560 --> 00:05:53,319 va a ser una lista de datos 121 00:05:53,319 --> 00:05:55,279 de tipo alumno, es una declaración 122 00:05:55,279 --> 00:05:56,180 por ahora de variable 123 00:05:56,180 --> 00:05:58,319 de un objeto variable 124 00:05:58,319 --> 00:06:00,379 pero hombre, tenemos que instanciarlo 125 00:06:00,379 --> 00:06:02,000 claro, tenemos que instanciar 126 00:06:02,000 --> 00:06:04,339 para que exista ya esa colección 127 00:06:04,339 --> 00:06:06,899 para que exista, tenemos que instanciarla 128 00:06:06,899 --> 00:06:08,579 bueno 129 00:06:08,579 --> 00:06:09,600 pues 130 00:06:09,600 --> 00:06:13,220 no podemos instanciarla 131 00:06:13,220 --> 00:06:15,100 así, esto no podemos hacerlo 132 00:06:15,100 --> 00:06:18,519 esto no podemos hacerlo 133 00:06:18,519 --> 00:06:20,579 porque ya sabemos que lista 134 00:06:20,579 --> 00:06:22,600 es una interfaz, lista no es 135 00:06:22,600 --> 00:06:24,639 una clase concreta, lista es una interfaz 136 00:06:24,639 --> 00:06:26,819 entonces yo tengo que instanciar 137 00:06:26,819 --> 00:06:28,639 de cualquier cosa que implemente 138 00:06:28,639 --> 00:06:30,699 esto, de cualquier cosa 139 00:06:30,699 --> 00:06:31,920 que lo implemente 140 00:06:31,920 --> 00:06:34,680 ¿no? cuando teníamos una interfaz 141 00:06:34,680 --> 00:06:36,740 animal, que la implementaban 142 00:06:36,740 --> 00:06:38,819 perro, gato, tú podías declarar la variable 143 00:06:38,819 --> 00:06:41,000 de tipo animal a, pero luego lo instanciabas 144 00:06:41,000 --> 00:06:42,860 new perro, new gato, así funcionaba 145 00:06:42,860 --> 00:06:44,600 ¿no? eso es lo que hemos visto de interfaces y de todo 146 00:06:44,600 --> 00:06:46,800 pues yo aquí tengo que decir 147 00:06:46,800 --> 00:06:48,860 oye, dime una implementación concreta 148 00:06:48,860 --> 00:06:50,839 de la lista, ¿qué implementación quieres? 149 00:06:50,839 --> 00:07:31,899 Te ofrezco dos. Elige. Bueno, pues esta es una. ArrayList dejaba útil. Pero tenemos otra. Vamos a imaginar que tenemos dos listas de alumnos. También tengo esta otra. Estas son las dos implementaciones posibles para las listas. 150 00:07:31,899 --> 00:07:33,740 esta 151 00:07:33,740 --> 00:07:36,120 dentro está hecha como un array 152 00:07:36,120 --> 00:07:38,240 que se tira y se hace 153 00:07:38,240 --> 00:07:39,639 de nuevo cada vez que haga falta 154 00:07:39,639 --> 00:07:42,259 y esta está hecha como una lista 155 00:07:42,259 --> 00:07:43,579 enlazada como la que vimos ayer 156 00:07:43,579 --> 00:07:47,540 ¿vale? ¿cómo se usan? 157 00:07:48,019 --> 00:07:49,319 se usan exactamente igual 158 00:07:49,319 --> 00:07:51,660 nosotros las estamos usando 159 00:07:51,660 --> 00:07:53,800 esto ya es 160 00:07:53,800 --> 00:07:55,040 transparente para nosotros 161 00:07:55,040 --> 00:07:57,540 cuando nosotros queramos insertar alumnos 162 00:07:57,540 --> 00:07:59,759 los insertaremos con el método correspondiente 163 00:07:59,759 --> 00:08:01,259 ¿y cómo lo haga por dentro? me da igual 164 00:08:01,259 --> 00:08:03,779 que hará bien un alumno nuevo 165 00:08:03,779 --> 00:08:06,540 y vamos a ponerlo en la lista 166 00:08:06,540 --> 00:08:08,360 alumnos, pues venga 167 00:08:08,360 --> 00:08:10,379 para eso que tengo, pues fijaos 168 00:08:10,379 --> 00:08:12,379 todos los métodos que tengo de alumnos 169 00:08:12,379 --> 00:08:15,300 para la lista 170 00:08:15,300 --> 00:08:26,500 pues fijaos todo lo que puedo hacer con la lista 171 00:08:26,500 --> 00:08:28,420 añadir un alumno 172 00:08:28,420 --> 00:08:30,240 añadir un alumno en una posición 173 00:08:30,240 --> 00:08:32,840 concreta, añadir de golpe 174 00:08:32,840 --> 00:08:34,299 un montón de alumnos 175 00:08:34,299 --> 00:08:36,659 que los tengo a su vez en otra colección 176 00:08:36,659 --> 00:08:38,360 añadir al principio 177 00:08:38,360 --> 00:08:41,360 añadir al final, eliminar la colección 178 00:08:41,360 --> 00:08:43,299 ver si un alumno 179 00:08:43,299 --> 00:08:44,720 está en una 180 00:08:44,720 --> 00:08:47,139 un objeto 181 00:08:47,139 --> 00:08:49,200 que yo le pase, está en esa colección 182 00:08:49,200 --> 00:08:49,799 o no está 183 00:08:49,799 --> 00:08:53,200 recuperar el primero, recuperar 184 00:08:53,200 --> 00:08:55,039 el último, decirme 185 00:08:55,039 --> 00:08:57,179 en qué posición está el objeto que yo le paso 186 00:08:57,179 --> 00:08:59,840 eliminar 187 00:08:59,840 --> 00:09:02,919 recuperar por posición, todo eso 188 00:09:02,919 --> 00:09:04,879 puedo hacer con una lista, todo eso 189 00:09:04,879 --> 00:09:07,100 y me da igual hacerlo con alumnos 190 00:09:07,100 --> 00:09:07,379 uno 191 00:09:07,379 --> 00:09:10,259 con alumnos 2 192 00:09:10,259 --> 00:09:11,379 tengo lo mismo 193 00:09:11,379 --> 00:09:13,779 lo que pasa es que internamente 194 00:09:13,779 --> 00:09:15,840 alumnos 1 lo hace de una manera 195 00:09:15,840 --> 00:09:18,500 y alumnos 2 lo hace de otra 196 00:09:18,500 --> 00:09:19,860 porque alumnos 1 es un ArrayList 197 00:09:19,860 --> 00:09:21,000 y alumnos 2 es un LinkedList 198 00:09:21,000 --> 00:09:22,440 cada uno lo hace a su manera 199 00:09:22,440 --> 00:09:24,740 pero el uso es el mismo 200 00:09:24,740 --> 00:09:28,320 yo lo uso para meter cosas, sacarlas, recorrer 201 00:09:28,320 --> 00:09:29,980 y para eso es para lo que lo uso 202 00:09:29,980 --> 00:09:33,360 ¿cuándo elegiré una y cuándo elegiré otra? 203 00:09:33,759 --> 00:09:34,659 pues ya lo hemos dicho 204 00:09:34,659 --> 00:09:37,039 ArrayList es muy buena para consultas 205 00:09:37,039 --> 00:09:38,700 Porque consultar un array es inmediato 206 00:09:38,700 --> 00:09:41,460 LinkedList es muy buena 207 00:09:41,460 --> 00:09:43,100 Para inserciones y eliminados 208 00:09:43,100 --> 00:09:45,539 Porque lo único que tengo que hacer es mover enlaces 209 00:09:45,539 --> 00:09:47,320 Mover punteros de direcciones de memoria 210 00:09:47,320 --> 00:09:48,019 Ya está 211 00:09:48,019 --> 00:09:52,389 Cuando tengo pocos datos 212 00:09:52,389 --> 00:09:54,470 Que estoy haciendo una cosa así 213 00:09:54,470 --> 00:09:57,269 Estoy resolviendo algo así sobre la marcha rápidamente 214 00:09:57,269 --> 00:09:59,509 Pues hombre, ArrayList es lo mejor 215 00:09:59,509 --> 00:10:01,289 Porque el array siempre es lo mejor 216 00:10:01,289 --> 00:10:03,509 Pero como tenga muchos datos 217 00:10:03,509 --> 00:10:04,950 Y esté metiendo y se ha acabado todo el rato 218 00:10:04,950 --> 00:10:05,649 ArrayList ya 219 00:10:05,649 --> 00:10:08,090 Tarda más 220 00:10:08,090 --> 00:10:10,529 bueno, pues entonces 221 00:10:10,529 --> 00:10:13,879 vamos a 222 00:10:13,879 --> 00:10:16,120 como las dos se usan igual 223 00:10:16,120 --> 00:10:17,480 las dos se usarían igual 224 00:10:17,480 --> 00:10:20,440 y todo lo que vamos a probar a partir de ahora 225 00:10:20,440 --> 00:10:22,220 aplica igual para las dos 226 00:10:22,220 --> 00:10:24,299 porque repito, la única diferencia 227 00:10:24,299 --> 00:10:26,159 es como lo hacen por dentro, pero es que eso 228 00:10:26,159 --> 00:10:28,059 no nos da igual, no tiene ninguna implicación para nosotros 229 00:10:28,059 --> 00:10:29,220 salvo el tiempo que tardan 230 00:10:29,220 --> 00:10:31,639 a la vista 231 00:10:31,639 --> 00:10:34,240 el envoltorio, una vez puesto el envoltorio 232 00:10:34,240 --> 00:10:35,759 hacia afuera ofrecen lo mismo las dos 233 00:10:35,759 --> 00:10:36,519 ofrecen lo mismo 234 00:10:36,519 --> 00:10:39,379 vale, entonces lo que 235 00:10:39,379 --> 00:10:41,820 haga con una lo puedo hacer con la otra igualmente 236 00:10:41,820 --> 00:10:43,620 vale, pues vamos a 237 00:10:43,620 --> 00:10:45,720 por ejemplo, insertar unos cuantos 238 00:10:45,720 --> 00:10:46,340 alumnos 239 00:10:46,340 --> 00:10:49,620 en la primera, pues venga 240 00:10:49,620 --> 00:10:50,860 vamos a insertar 241 00:10:50,860 --> 00:10:53,879 un nuevo alumno 242 00:10:53,879 --> 00:10:55,740 con su número 243 00:10:55,740 --> 00:10:56,840 de matrícula 244 00:10:56,840 --> 00:10:58,980 que no sé si era int o que era 245 00:10:58,980 --> 00:11:01,940 era int, número de matrícula 246 00:11:01,940 --> 00:11:02,340 uno 247 00:11:02,340 --> 00:11:05,220 vale, este alumno 248 00:11:05,220 --> 00:11:06,580 que tiene 20 249 00:11:06,580 --> 00:11:10,639 ala, ya tengo este alumno en la colección 250 00:11:10,639 --> 00:11:12,360 y ya está, y tan fácil 251 00:11:12,360 --> 00:11:15,169 y tan cómodo 252 00:11:15,169 --> 00:11:16,990 ¿que inserto un segundo alumno? 253 00:11:24,639 --> 00:11:26,799 pues ala, ya tengo el segundo alumno en la colección 254 00:11:26,799 --> 00:11:28,840 entonces, insertar es comodísimo 255 00:11:28,840 --> 00:11:35,120 por ejemplo, en la lista 256 00:11:35,120 --> 00:11:37,019 alumnos 2, que es una lista 257 00:11:37,019 --> 00:11:38,639 está el método 258 00:11:38,639 --> 00:11:41,059 addAll, que lo hemos visto ahí 259 00:11:41,059 --> 00:11:49,929 a ver que lo... 260 00:11:49,929 --> 00:11:52,029 y este método, por ejemplo, ¿qué hace? 261 00:11:52,169 --> 00:11:53,590 aquí uno se trata de mirar la ayuda 262 00:11:53,590 --> 00:11:56,029 es decir, pues este te añade de golpe 263 00:11:56,029 --> 00:11:59,129 todos los alumnos que haya en la colección 264 00:11:59,129 --> 00:12:00,029 que tú le pasas 265 00:12:00,029 --> 00:12:03,149 pues por ejemplo aquí habríamos añadido 266 00:12:03,149 --> 00:12:04,129 a alumnos 2 267 00:12:04,129 --> 00:12:07,049 todos los alumnos que están en la colección 268 00:12:07,049 --> 00:12:08,009 que tú le estás pasando 269 00:12:08,009 --> 00:12:10,250 o sea habríamos añadido los de alumnos 1 270 00:12:10,250 --> 00:12:11,049 por ejemplo 271 00:12:11,049 --> 00:12:13,950 entonces se trata aquí de ver que métodos tengo 272 00:12:13,950 --> 00:12:15,029 para usarlos 273 00:12:15,029 --> 00:12:16,230 nada más 274 00:12:16,230 --> 00:12:19,830 que ahora queremos añadir un alumno 275 00:12:19,830 --> 00:12:21,830 pero en medio de los otros anteriores 276 00:12:21,830 --> 00:12:24,710 pues había el método 277 00:12:24,710 --> 00:12:26,850 añadir, este estaba sobrecargado 278 00:12:26,850 --> 00:12:28,009 tú le pasabas una posición 279 00:12:28,009 --> 00:12:30,470 vamos a decirle en la posición 1 280 00:12:30,470 --> 00:12:33,210 y le vamos a añadir un nuevo alumno 281 00:12:33,210 --> 00:12:42,320 este 282 00:12:42,320 --> 00:12:48,960 ala, este aquí 283 00:12:48,960 --> 00:12:52,860 por ejemplo, esta es otra versión de add 284 00:12:52,860 --> 00:12:54,740 sobrecargada que tú le dices en qué 285 00:12:54,740 --> 00:12:55,820 posición quieres 286 00:12:55,820 --> 00:12:59,159 bueno y así podemos insertar 287 00:12:59,159 --> 00:12:59,759 sin problema 288 00:12:59,759 --> 00:13:03,000 que ahora queremos recorrer 289 00:13:03,000 --> 00:13:04,539 la colección para mostrar lo que hay 290 00:13:04,539 --> 00:13:07,379 bueno, tenemos el método get 291 00:13:07,379 --> 00:13:09,919 que te recupera en la posición que tú le digas 292 00:13:09,919 --> 00:13:11,799 pues podríamos 293 00:13:11,799 --> 00:13:13,899 combinar el for de toda la vida 294 00:13:13,899 --> 00:13:15,440 con el método get y ya está 295 00:13:15,440 --> 00:13:18,039 como hacíamos en la colección 296 00:13:18,039 --> 00:13:18,799 que hicimos nosotros 297 00:13:18,799 --> 00:13:21,740 desde igual a cero, mientras si sea menor que 298 00:13:21,740 --> 00:13:23,899 ¿quién? que alumnos1.size 299 00:13:25,279 --> 00:13:27,299 porque tenemos el método size 300 00:13:27,299 --> 00:13:29,539 que me dice el número de elementos de la colección 301 00:13:29,539 --> 00:13:31,639 incrementando y 302 00:13:31,639 --> 00:13:35,090 pues vamos a mostrar 303 00:13:35,090 --> 00:13:39,039 alumnos1 304 00:13:39,039 --> 00:13:40,519 get 305 00:13:40,519 --> 00:13:46,899 y, ¿vale? 306 00:13:47,279 --> 00:13:49,460 Combinando el método get que me devuelve 307 00:13:49,460 --> 00:13:50,799 el alumno en la posición y 308 00:13:50,799 --> 00:13:52,720 con el for 309 00:13:52,720 --> 00:13:54,940 puedo recorrerlo y mostrarlo 310 00:13:54,940 --> 00:13:56,620 exactamente igual que recorría un array. 311 00:13:59,840 --> 00:14:01,120 Vale, ahora pregunto 312 00:14:01,120 --> 00:14:05,539 cuando yo haga este system.out.println 313 00:14:05,539 --> 00:14:08,980 me va a mostrar los 314 00:14:08,980 --> 00:14:10,840 tres alumnos de alumnos1, ¿verdad? 315 00:14:11,419 --> 00:14:12,980 alumnos1 tiene tres, porque le he metido 316 00:14:12,980 --> 00:14:14,840 aquí dos, luego le he metido otro 317 00:14:14,840 --> 00:14:17,080 entre medias. ¿Pero cómo me lo va a mostrar? 318 00:14:17,379 --> 00:14:18,659 ¿Qué me va a mostrar de esos alumnos? 319 00:14:21,220 --> 00:14:21,799 ¿Qué me va a mostrar? 320 00:14:23,960 --> 00:14:24,580 ¿Me va a mostrar 321 00:14:24,580 --> 00:14:28,840 la edad? ¿Me va a mostrar la...? 322 00:14:28,840 --> 00:14:30,399 Me va a mostrar una cosa muy rara 323 00:14:30,399 --> 00:14:32,440 porque ya sabemos que este 324 00:14:32,440 --> 00:14:34,440 llamará al toString de ese 325 00:14:34,440 --> 00:14:36,419 objeto y el toString 326 00:14:36,419 --> 00:14:38,440 de la clase alumno es el dado de object 327 00:14:38,440 --> 00:14:39,440 que te muestra una patata. 328 00:14:40,379 --> 00:14:41,940 Pues entonces no queremos que nos muestre una patata. 329 00:14:42,340 --> 00:14:44,179 Vamos a sobreescribir toString en alumno. 330 00:14:45,100 --> 00:14:46,519 Vamos a sobreescribir toString 331 00:14:46,519 --> 00:14:56,730 un alumno. ¿Nos gusta 332 00:14:56,730 --> 00:14:57,909 esto que nos ofrece? 333 00:14:58,629 --> 00:15:00,669 Venga, vale, nos gusta. Lo podríamos cambiar 334 00:15:00,669 --> 00:15:02,049 y poner el tu stream que quisiéramos. 335 00:15:03,490 --> 00:15:04,490 Bueno, vamos a hacer este main. 336 00:15:04,690 --> 00:15:06,070 Ups, a ver si 337 00:15:06,070 --> 00:15:10,529 me ha insertado a Pepe, a Javi 338 00:15:10,529 --> 00:15:12,750 y a ver dónde me ha metido a Luis, que le he dicho en la posición 339 00:15:12,750 --> 00:15:14,610 uno. A ver cómo interpreta a la uno. Si la interpreta 340 00:15:14,610 --> 00:15:16,529 como la segunda, a ver cómo, dónde me la ha metido. 341 00:15:17,210 --> 00:15:18,190 Porque no sé seguro 342 00:15:18,190 --> 00:15:20,590 la uno, cómo me la está interpretando 343 00:15:20,590 --> 00:15:22,750 a la hora de meterlo dentro. Si es después 344 00:15:22,750 --> 00:15:23,710 de ese o delante. 345 00:15:23,710 --> 00:15:25,809 vamos a ejecutar esto 346 00:15:25,809 --> 00:15:33,360 vale, me lo ha puesto 347 00:15:33,360 --> 00:15:35,120 en la posición 1, efectivamente 348 00:15:35,120 --> 00:15:36,480 esta es la 0 349 00:15:36,480 --> 00:15:39,039 esta es la 1 350 00:15:39,039 --> 00:15:40,399 a donde me ha colado 351 00:15:40,399 --> 00:15:42,299 a la 1 me ha colado este 352 00:15:42,299 --> 00:15:45,200 y esta es la 3 353 00:15:45,200 --> 00:15:46,080 vale 354 00:15:46,080 --> 00:15:48,539 bueno, pues una forma 355 00:15:48,539 --> 00:15:51,179 muy cómoda de guardar un montón 356 00:15:51,179 --> 00:15:53,539 de datos, me hago una ArrayList o un LinkedList 357 00:15:53,539 --> 00:15:55,059 me da lo mismo, porque el uso 358 00:15:55,059 --> 00:15:57,039 sería idéntico, son los mismos métodos 359 00:15:57,039 --> 00:15:58,620 me da lo mismo uno que otro 360 00:15:58,620 --> 00:16:00,519 y ahí meto datos 361 00:16:00,519 --> 00:16:02,659 y lo recorro 362 00:16:02,659 --> 00:16:04,440 meto datos y recorro, si quiero 363 00:16:04,440 --> 00:16:09,279 vale, ¿qué pasa si quiero eliminar? 364 00:16:09,360 --> 00:16:11,039 también puedo eliminar, porque de unos datos 365 00:16:11,039 --> 00:16:13,279 recordad que esencialmente lo que se hacía 366 00:16:13,279 --> 00:16:13,620 era 367 00:16:13,620 --> 00:16:16,360 insertar 368 00:16:16,360 --> 00:16:19,039 consultar, eliminar y 369 00:16:19,039 --> 00:16:20,620 modificar, no a un dato 370 00:16:20,620 --> 00:16:22,840 pues cambiarle lo que tuviera, lo que tiene dentro 371 00:16:22,840 --> 00:16:24,940 entonces hemos hecho 372 00:16:24,940 --> 00:16:26,919 insertar, add, insertar 373 00:16:26,919 --> 00:16:28,539 es add, add first, add, me da lo mismo 374 00:16:28,539 --> 00:16:29,600 los métodos que me ofrezca 375 00:16:29,600 --> 00:16:31,580 insertar, hemos consultado 376 00:16:31,580 --> 00:16:33,580 combinando el get y el for 377 00:16:33,580 --> 00:16:36,500 que yo quiero eliminar un dato de la colección 378 00:16:36,500 --> 00:16:37,899 lo tengo mucho más fácil con el array 379 00:16:37,899 --> 00:16:40,320 eliminar el array es que aparte 380 00:16:40,320 --> 00:16:42,259 no se podía hacer, teníamos que inventárnoslo 381 00:16:42,259 --> 00:16:44,539 teníamos que hacer un array de menos posiciones 382 00:16:44,539 --> 00:16:46,220 copiar saltándonos 383 00:16:46,220 --> 00:16:48,360 teníamos que hacer todo eso, porque eliminar de un array 384 00:16:48,360 --> 00:16:50,379 como tal no se puede, el array es el que es 385 00:16:50,379 --> 00:16:51,259 y no pueden coger 386 00:16:51,259 --> 00:16:53,000 pues aquí sí que podemos 387 00:16:53,000 --> 00:16:55,240 porque aquí 388 00:16:55,240 --> 00:16:58,340 alumnos1 tiene dos variantes 389 00:16:58,340 --> 00:16:59,379 del método remove 390 00:16:59,379 --> 00:17:02,559 o varias, no dos, tiene muchas 391 00:17:02,559 --> 00:17:13,140 aloop 392 00:17:13,140 --> 00:17:15,220 nos 393 00:17:15,220 --> 00:17:17,319 uno tiene 394 00:17:17,319 --> 00:17:19,299 del método remove 395 00:17:19,299 --> 00:17:20,940 fijaos cuantas variantes tiene 396 00:17:20,940 --> 00:17:23,799 borrar por posición, le pasas una posición 397 00:17:23,799 --> 00:17:25,759 y te borra el de esa posición, ya está 398 00:17:25,759 --> 00:17:27,619 como lo haga ella, me da igual 399 00:17:27,619 --> 00:17:29,400 que lo hace como array, como linked list 400 00:17:29,400 --> 00:17:31,339 depende, la que hayamos elegido 401 00:17:31,339 --> 00:17:33,180 le pasas un objeto 402 00:17:33,180 --> 00:17:35,380 y te borra el objeto que sea igual a ese 403 00:17:35,380 --> 00:17:38,740 Te borra todos los de una colección 404 00:17:38,740 --> 00:17:40,299 Que si tú le pasas remove all 405 00:17:40,299 --> 00:17:41,180 Te borra el primero 406 00:17:41,180 --> 00:17:44,259 Te borra el que cumple un predicado 407 00:17:44,259 --> 00:17:46,740 Pero construir predicados no sabemos hacerlo 408 00:17:46,740 --> 00:17:48,440 Esto es como construir una condición 409 00:17:48,440 --> 00:17:50,140 Tiene que ver con interfaces funcionales 410 00:17:50,140 --> 00:17:51,339 Que no estamos en ello 411 00:17:51,339 --> 00:17:53,720 Con programación funcional 412 00:17:53,720 --> 00:17:55,880 Vale, remove last, te borra el último 413 00:17:55,880 --> 00:17:58,259 Tiene bastantes variantes de remove 414 00:17:58,259 --> 00:18:05,279 Que yo quiero borrar 415 00:18:05,279 --> 00:18:08,180 El que está entre medias 416 00:18:08,180 --> 00:18:09,160 Pues hombre 417 00:18:09,160 --> 00:18:11,099 puedo usar esto 418 00:18:11,099 --> 00:18:13,680 puedo usar esto y efectivamente 419 00:18:13,680 --> 00:18:14,960 si vuelvo a recorrerlo 420 00:18:14,960 --> 00:18:17,740 me habría borrado el que está en la 421 00:18:17,740 --> 00:18:22,039 posición 1, vale 422 00:18:22,039 --> 00:18:24,140 si yo ahora vuelvo a recorrer, he borrado el de 423 00:18:24,140 --> 00:18:26,220 posición 1 y vuelvo a 424 00:18:26,220 --> 00:18:29,740 hacer el recorrido, vuelvo 425 00:18:29,740 --> 00:18:31,319 a hacerlo, voy a poner aquí un 426 00:18:31,319 --> 00:18:36,950 separador para que 427 00:18:36,950 --> 00:18:41,380 se vea, pues 428 00:18:41,380 --> 00:18:45,130 efectivamente me ha 429 00:18:45,130 --> 00:18:47,150 borrado el de posición 1, vale 430 00:18:47,150 --> 00:18:48,970 pues hala, muy útil 431 00:18:48,970 --> 00:18:50,750 muy útil, ¿verdad? las listas 432 00:18:50,750 --> 00:18:53,190 para guardar cosas, eliminarlas, etc 433 00:18:53,190 --> 00:18:56,750 y no solo eso, sino 434 00:18:56,750 --> 00:18:59,069 para diferentes utilidades, por ejemplo 435 00:18:59,069 --> 00:19:01,230 si seguimos mirando métodos que haya 436 00:19:01,230 --> 00:19:04,589 en el list 437 00:19:04,589 --> 00:19:06,170 este de aquí 438 00:19:06,170 --> 00:19:08,970 ay, que agollón lupa quería poner 439 00:19:08,970 --> 00:19:11,009 esto 440 00:19:11,009 --> 00:19:24,609 fijaos, tiene un sort 441 00:19:24,609 --> 00:19:26,750 un sort 442 00:19:26,750 --> 00:19:28,690 que tiene 443 00:19:28,690 --> 00:19:29,410 toda la pinta 444 00:19:29,410 --> 00:19:31,609 de que te ordena 445 00:19:31,609 --> 00:19:34,269 ¿verdad? tiene toda la pinta de que te ordena 446 00:19:34,269 --> 00:19:36,049 los elementos de la lista, ostras, eso es 447 00:19:36,049 --> 00:19:38,089 complicadísimo hacer en una lista enlazada 448 00:19:38,089 --> 00:19:40,009 en un array, tienes que estar a través 449 00:19:40,009 --> 00:19:41,950 de un intermedio, subir a una lista enlazada 450 00:19:41,950 --> 00:19:44,170 pues tienes ya un método que te lo hace 451 00:19:44,170 --> 00:19:46,170 tienes un método 452 00:19:46,170 --> 00:19:50,549 que te ordena 453 00:19:50,549 --> 00:19:54,339 ¿vale? pero claro, hay que 454 00:19:54,339 --> 00:19:56,500 pasarle 455 00:19:56,500 --> 00:20:04,119 una cosa 456 00:20:04,119 --> 00:20:05,839 que dice aquí, que es 457 00:20:05,839 --> 00:20:07,259 el criterio de ordenación 458 00:20:07,259 --> 00:20:08,680 ¿no? 459 00:20:08,680 --> 00:20:12,180 yo he hablado, te ordena alumnos 460 00:20:12,180 --> 00:20:14,019 y los alumnos como se ordenan, ni idea 461 00:20:14,019 --> 00:20:15,779 los alumnos no sabemos como se ordenan 462 00:20:15,779 --> 00:20:18,259 no es como los números, los números tienen un orden 463 00:20:18,259 --> 00:20:20,059 los int, los double 464 00:20:20,059 --> 00:20:21,779 tienen ya un orden intrínseco que ya 465 00:20:21,779 --> 00:20:23,480 la máquina virtual lo sabe 466 00:20:23,480 --> 00:20:25,980 porque está ya programado en la JDK 467 00:20:25,980 --> 00:20:27,839 está programado, tiene un orden que es su orden natural 468 00:20:27,839 --> 00:20:29,759 el orden natural numérico del álgebra 469 00:20:29,759 --> 00:20:31,740 de toda la vida, pero los alumnos 470 00:20:31,740 --> 00:20:32,779 no tienen un orden 471 00:20:32,779 --> 00:20:35,440 entonces si llegamos a este método 472 00:20:35,440 --> 00:20:37,359 hay que decirle 473 00:20:37,359 --> 00:20:39,660 cuál es el criterio de ordenación que queremos dar. 474 00:20:41,140 --> 00:20:41,660 ¿Vale? 475 00:20:42,660 --> 00:20:43,700 Pues vamos a hacerlo. 476 00:20:44,220 --> 00:20:48,019 Porque esto nos vale para repasar también lo de interfaces. 477 00:20:49,079 --> 00:20:49,299 ¿Vale? 478 00:20:49,380 --> 00:20:50,940 Vamos a, en este proyecto de ejemplo, 479 00:20:51,079 --> 00:20:52,059 a ordenar estos alumnos. 480 00:20:52,880 --> 00:20:57,980 Vamos a ordenar estos alumnos. 481 00:20:58,579 --> 00:20:59,420 Vamos a ver. 482 00:21:05,970 --> 00:21:07,789 Ordenamos los alumnos. 483 00:21:07,890 --> 00:21:08,829 Los vamos a ordenar. 484 00:21:08,910 --> 00:21:10,089 Vamos a decidir un criterio. 485 00:21:11,430 --> 00:21:14,309 Pues por edad, por orden alfabético, 486 00:21:14,309 --> 00:21:15,650 o por número de matrícula? 487 00:21:16,309 --> 00:21:17,109 ¿Qué orden queremos? 488 00:21:21,069 --> 00:21:21,509 Vaya. 489 00:21:22,750 --> 00:21:24,069 Prefería por alfabeto 490 00:21:24,069 --> 00:21:24,750 que era más difícil. 491 00:21:26,009 --> 00:21:27,910 Bueno, venga, empezamos por número de matrícula. 492 00:21:27,990 --> 00:21:28,130 Vale. 493 00:21:29,869 --> 00:21:31,809 Ya, porque pensaba que 494 00:21:31,809 --> 00:21:33,730 queríais complicaros la vida. 495 00:21:36,670 --> 00:21:38,490 Vale, vamos a ordenar por número de matrícula. 496 00:21:38,490 --> 00:21:38,930 Entonces, 497 00:21:39,849 --> 00:21:42,250 afortunadamente no tenemos que 498 00:21:42,250 --> 00:21:44,230 implementar nosotros un algoritmo de ordenación 499 00:21:44,230 --> 00:21:46,230 como la burbuja, ir copiando 500 00:21:46,230 --> 00:21:48,029 de un lado a otro que tuviéramos que hacerlo es 501 00:21:48,029 --> 00:21:49,630 complicado, no tenemos 502 00:21:49,630 --> 00:21:52,150 porque está este método, sort, vale 503 00:21:52,150 --> 00:21:54,450 pero a sort hay que pasarle 504 00:21:54,450 --> 00:21:55,869 una cosa 505 00:21:55,869 --> 00:21:57,430 que es un objeto 506 00:21:57,430 --> 00:21:59,529 un objeto 507 00:21:59,529 --> 00:22:01,309 que sea un objeto que 508 00:22:01,309 --> 00:22:06,130 lleve dentro el criterio 509 00:22:06,130 --> 00:22:07,250 de ordenación 510 00:22:07,250 --> 00:22:10,109 vale, entonces este objeto 511 00:22:10,109 --> 00:22:12,170 que le pasemos tiene que ser de una clase 512 00:22:12,170 --> 00:22:14,069 pues yo que sé 513 00:22:14,069 --> 00:22:15,089 vamos a llamar a esa clase 514 00:22:15,089 --> 00:22:17,650 criterio num matricula 515 00:22:17,650 --> 00:22:25,119 pues este objeto que yo le paso 516 00:22:25,119 --> 00:22:27,180 tiene que ser un objeto 517 00:22:27,180 --> 00:22:28,759 que lleve dentro 518 00:22:28,759 --> 00:22:30,880 el criterio que yo decido 519 00:22:30,880 --> 00:22:32,119 para esta ordenación 520 00:22:32,119 --> 00:22:33,859 el criterio que yo decido 521 00:22:33,859 --> 00:22:36,519 ¿vale? entonces 522 00:22:36,519 --> 00:22:39,119 este objeto no está hecho 523 00:22:39,119 --> 00:22:40,759 este objeto lo tengo 524 00:22:40,759 --> 00:22:42,240 tengo que declarar yo esta clase 525 00:22:42,240 --> 00:22:44,079 perdón, esta clase no está hecha 526 00:22:44,079 --> 00:22:46,799 tengo que declararla, tengo que declararla esa clase 527 00:22:46,799 --> 00:22:48,359 para que tenga dentro 528 00:22:48,359 --> 00:22:50,839 para que tenga dentro ese criterio 529 00:22:50,839 --> 00:22:52,680 de ordenación, venga pues 530 00:22:52,680 --> 00:22:53,839 vamos a crear esa clase 531 00:22:53,839 --> 00:22:58,390 vamos a 532 00:22:58,390 --> 00:23:04,480 que ya me lo ha hecho solito, no lo quiero 533 00:23:04,480 --> 00:23:06,859 vale, esta es 534 00:23:06,859 --> 00:23:08,640 la clase que tenemos que hacer, y esto fuera 535 00:23:08,640 --> 00:23:14,200 vale, esta es la clase que tenemos 536 00:23:14,200 --> 00:23:16,400 que hacer, ¿verdad? esta es la clase 537 00:23:16,400 --> 00:23:17,299 que tenemos que hacer 538 00:23:17,299 --> 00:23:19,500 para crear aquí 539 00:23:19,500 --> 00:23:21,440 ahí no, ahí 540 00:23:21,440 --> 00:23:23,559 un objeto de esa clase 541 00:23:23,559 --> 00:23:26,079 un objeto de esa clase que lleva dentro 542 00:23:26,079 --> 00:23:28,039 el criterio de comparación que lo lleva dentro 543 00:23:28,039 --> 00:23:29,779 vale 544 00:23:29,779 --> 00:23:31,880 pues entonces, ¿qué tiene que hacer 545 00:23:31,880 --> 00:23:34,279 una clase para poder 546 00:23:34,279 --> 00:23:35,900 ser criterio de comparación? 547 00:23:37,200 --> 00:23:38,180 pues para poder 548 00:23:38,180 --> 00:23:40,059 ejercer de algo, para poder 549 00:23:40,059 --> 00:23:41,279 ejercer de cualquier cosa 550 00:23:41,279 --> 00:23:44,259 tienes que implementar, adherirte 551 00:23:44,259 --> 00:23:46,099 a la interfaz que te da 552 00:23:46,099 --> 00:23:46,880 permiso a eso 553 00:23:46,880 --> 00:23:50,059 bueno, pues nosotros queremos que 554 00:23:50,059 --> 00:23:51,240 criterio en un matrícula 555 00:23:51,240 --> 00:23:53,700 tenga la potestad de 556 00:23:53,700 --> 00:23:56,140 ser criterio de comparación 557 00:23:56,140 --> 00:23:58,480 pues para tener la potestad de ser 558 00:23:58,480 --> 00:24:00,420 criterio de comparación tiene que 559 00:24:00,420 --> 00:24:02,759 implementar una cosa que se llama 560 00:24:02,759 --> 00:24:04,900 comparator 561 00:24:04,900 --> 00:24:09,420 tiene que implementar esto 562 00:24:09,420 --> 00:24:11,279 y ahora esto ya lo 563 00:24:11,279 --> 00:24:13,099 importamos de java útil 564 00:24:13,099 --> 00:24:17,980 también, vale 565 00:24:17,980 --> 00:24:20,480 entonces para que esta clase pueda ser 566 00:24:20,480 --> 00:24:22,019 pueda adherirse a eso 567 00:24:22,019 --> 00:24:24,400 oye que yo soy criterio de comparación 568 00:24:24,400 --> 00:24:26,319 yo soy criterio de comparar 569 00:24:26,319 --> 00:24:28,559 pues si tú quieres ser criterio de comparación 570 00:24:28,559 --> 00:24:31,119 implementa comparator, si quieres ser 571 00:24:31,119 --> 00:24:32,980 criterio de comparación, vale 572 00:24:32,980 --> 00:24:35,220 pues implemento comparator, estupendo 573 00:24:35,220 --> 00:24:36,380 lo implemento 574 00:24:36,380 --> 00:24:39,079 vale, comparator, esta es una clase 575 00:24:39,079 --> 00:24:41,099 genérica, es decir 576 00:24:41,099 --> 00:24:43,059 la podemos usar así en general 577 00:24:43,059 --> 00:24:44,920 pero lo ideal, ahora que ya sabemos 578 00:24:44,920 --> 00:24:46,400 lo que son las clases genéricas, es decir 579 00:24:46,400 --> 00:24:48,940 vale, comparador es 580 00:24:48,940 --> 00:24:50,880 un comparador genérico de cosas, pero tú que 581 00:24:50,880 --> 00:24:53,059 estás comparando, yo estoy comparando 582 00:24:53,059 --> 00:24:54,859 alumnos, venga pues dime 583 00:24:54,859 --> 00:24:56,740 entonces que tú eres 584 00:24:56,740 --> 00:25:05,200 un comparador de alumnos dime esto concreta me ya concreta me y dime que eres de alumno porque 585 00:25:05,200 --> 00:25:15,589 si uno se va a esta clase esta es una interfaz genérica esta es la interfaz que tiene que 586 00:25:15,589 --> 00:25:22,089 implementar cualquiera que quiera ser criterio de comparación de algo y este es el tipo genérico que 587 00:25:22,089 --> 00:25:32,359 es el algo que tú vas a comparar entre sí sí sí sí a cualquier cosa sea clase interfaz que dependa 588 00:25:32,359 --> 00:25:33,380 de un tipo abstracto 589 00:25:33,380 --> 00:25:37,920 no, no tienes que pasarlo, pero si no se lo pasas 590 00:25:37,920 --> 00:25:39,119 entonces tienes que trabajar con object 591 00:25:39,119 --> 00:25:41,400 y si se lo pasas 592 00:25:41,400 --> 00:25:43,900 entonces tienes mucho, no pasa nada 593 00:25:43,900 --> 00:25:45,259 el compilador fenomenal 594 00:25:45,259 --> 00:25:47,920 tú le pasas object, lo traga todo porque no has especificado 595 00:25:47,920 --> 00:25:49,599 el tipo, el problema viene luego 596 00:25:49,599 --> 00:25:51,680 en tiempo de ejecución, que va a tener que 597 00:25:51,680 --> 00:25:53,720 hacer casting y vete 598 00:25:53,720 --> 00:25:55,000 a saber los casting como salen 599 00:25:55,000 --> 00:25:57,299 si tú dices, no, no, trabaja con alumnos 600 00:25:57,299 --> 00:25:59,539 entonces el compilador te prohíbe y solo te deja 601 00:25:59,539 --> 00:26:01,500 que metas alumnos, con lo cual el compilador 602 00:26:01,500 --> 00:26:03,640 es el que te pone, se pone estricto 603 00:26:03,640 --> 00:26:06,420 pero a cambio ya en la ejecución no tendrás problemas 604 00:26:06,420 --> 00:26:08,279 porque ya el compilador se ha asegurado 605 00:26:08,279 --> 00:26:09,460 de que solo metas alumnos 606 00:26:09,460 --> 00:26:11,119 no sé si más o menos me explico 607 00:26:11,119 --> 00:26:14,059 vale, pues entonces la idea es 608 00:26:14,059 --> 00:26:16,480 cuando una clase es genérica, concretarle el tipo 609 00:26:16,480 --> 00:26:18,519 concretarle, para que ya el compilador 610 00:26:18,519 --> 00:26:20,519 te obligue y te diga, eh, que me has dicho alumno 611 00:26:20,519 --> 00:26:22,460 pues alumno, no me metas cosas que no sean alumno 612 00:26:22,460 --> 00:26:24,900 no me metas cualquier obvio, no, meteme alumno 613 00:26:24,900 --> 00:26:26,319 es lo ideal 614 00:26:26,319 --> 00:26:28,220 vale 615 00:26:28,220 --> 00:26:29,279 pues aquí 616 00:26:29,279 --> 00:26:31,420 esta de aquí 617 00:26:31,420 --> 00:26:34,140 que implemente 618 00:26:34,140 --> 00:26:36,240 un comparador pero de alumnos 619 00:26:36,240 --> 00:26:37,960 que sea solo un comparador de alumnos 620 00:26:37,960 --> 00:26:40,059 que no valga para comparar perro 621 00:26:40,059 --> 00:26:41,880 con mesa, porque es que eso luego 622 00:26:41,880 --> 00:26:44,440 no va a casar en tiempo de ejecución 623 00:26:44,440 --> 00:26:46,220 va a tener que hacer un casting y no va a casar 624 00:26:46,220 --> 00:26:48,140 vale, pues entonces 625 00:26:48,140 --> 00:26:50,299 si queremos que esto sea un criterio que implemente 626 00:26:50,299 --> 00:26:51,839 el comparador este de alumno 627 00:26:51,839 --> 00:26:54,539 el compilador nos dice lo que ya no sabemos de toda la vida 628 00:26:54,539 --> 00:26:56,400 ah, pues tienes que implementar los métodos 629 00:26:56,400 --> 00:26:58,480 del comparador este, lo siento, tienes que implementarlo 630 00:26:58,480 --> 00:27:00,200 no pasa nada 631 00:27:00,200 --> 00:27:03,140 los implemento 632 00:27:03,140 --> 00:27:04,200 ala 633 00:27:04,200 --> 00:27:06,700 este es el método 634 00:27:06,700 --> 00:27:07,859 que tenemos que implementar 635 00:27:07,859 --> 00:27:10,759 y este método es en el que 636 00:27:10,759 --> 00:27:12,880 tú ya pones lo que te dé la gana 637 00:27:12,880 --> 00:27:14,779 pones como quieres 638 00:27:14,779 --> 00:27:16,700 comparar a un alumno 639 00:27:16,700 --> 00:27:20,339 con otro, comparar 640 00:27:20,339 --> 00:27:22,460 significa decir cuál va antes y cuál va después 641 00:27:22,460 --> 00:27:24,539 eso significa comparar, decir cuál va antes y cuál va 642 00:27:24,539 --> 00:27:26,500 después, y el criterio es el mismo 643 00:27:26,500 --> 00:27:28,400 que vimos con el comparable, que esto ya lo hemos 644 00:27:28,400 --> 00:27:29,900 trabajado, y es 645 00:27:29,900 --> 00:27:31,539 si esto es negativo 646 00:27:31,539 --> 00:27:33,819 se sobreentiende que este va antes 647 00:27:33,819 --> 00:27:36,440 si esto es positivo 648 00:27:36,440 --> 00:27:38,039 se sobreentiende 649 00:27:38,039 --> 00:27:39,039 que este va después 650 00:27:39,039 --> 00:27:41,799 y si son iguales 651 00:27:41,799 --> 00:27:43,619 y si es cero, perdón, si es cero 652 00:27:43,619 --> 00:27:45,400 se sobreentiende que es que ni uno 653 00:27:45,400 --> 00:27:48,099 no es mayor ni menor, que es que están en la misma 654 00:27:48,099 --> 00:27:49,759 posición en cuanto a orden 655 00:27:49,759 --> 00:27:53,369 ¿vale? es como el 3 y el 5 656 00:27:53,369 --> 00:27:55,529 el 3 es menor que el 5, el 3 y el 3 657 00:27:55,529 --> 00:27:57,210 el 3 es igual que el 3 658 00:27:57,210 --> 00:27:58,150 no es ni menor ni mayor 659 00:27:58,150 --> 00:28:01,410 ¿vale? pues aquí tenemos que con esas premisas 660 00:28:01,410 --> 00:28:02,430 de funcionamiento 661 00:28:02,430 --> 00:28:05,250 y a inventárnoslo, vale 662 00:28:05,250 --> 00:28:07,109 entonces yo quiero que dé negativo 663 00:28:07,109 --> 00:28:09,589 si el número de matrícula de O1 664 00:28:09,589 --> 00:28:11,569 es menor que el número de matrícula 665 00:28:11,569 --> 00:28:12,089 de O2 666 00:28:12,089 --> 00:28:15,470 cero si el número de matrícula es igual 667 00:28:15,470 --> 00:28:17,589 porque hemos dicho ordenar en orden ascendente 668 00:28:17,589 --> 00:28:18,490 el número de matrícula 669 00:28:18,490 --> 00:28:21,329 y positivo si el número de matrícula de O1 670 00:28:21,329 --> 00:28:23,250 es mayor, hombre pues quizá 671 00:28:23,250 --> 00:28:24,509 lo más fácil es devolver esto 672 00:28:24,509 --> 00:28:27,289 O1 punto 673 00:28:27,289 --> 00:28:29,250 get 674 00:28:29,250 --> 00:28:30,509 num matrícula 675 00:28:30,509 --> 00:28:35,329 menos o uno o dos, perdón. 676 00:28:41,500 --> 00:28:42,619 Esto es lo más cómodo. 677 00:28:43,920 --> 00:28:47,599 Si el número de matrícula de este está antes, 678 00:28:47,799 --> 00:28:49,559 es un número más bajito que este, 679 00:28:50,559 --> 00:28:51,500 esto me va a dar negativo. 680 00:28:52,460 --> 00:28:55,640 Luego efectivamente el método interpreta que este alumno va antes. 681 00:28:57,079 --> 00:28:59,920 Si este número es mayor que este otro, 682 00:29:01,039 --> 00:29:02,319 la resta va a dar positiva, 683 00:29:02,579 --> 00:29:03,759 la resta va a dar positiva, 684 00:29:04,380 --> 00:29:05,579 luego esto va a dar positivo, 685 00:29:05,579 --> 00:29:07,240 luego efectivamente el método 686 00:29:07,240 --> 00:29:09,880 lo que nos devuelve es que este va después 687 00:29:09,880 --> 00:29:11,700 y si 688 00:29:11,700 --> 00:29:13,680 los números de matrícula son idénticos 689 00:29:13,680 --> 00:29:15,660 la resta es cero, esto va a devolver cero 690 00:29:15,660 --> 00:29:17,380 ni uno es mayor que el otro 691 00:29:17,380 --> 00:29:18,460 ni otro es mayor que el uno 692 00:29:18,460 --> 00:29:22,750 pues ahora tenemos un criterio de comparación ya 693 00:29:22,750 --> 00:29:24,569 perfectísimamente implementado 694 00:29:24,569 --> 00:29:27,190 con todos los requisitos que le hacen falta 695 00:29:27,190 --> 00:29:29,049 implementar la capacidad 696 00:29:29,049 --> 00:29:30,690 de ser criterio de comparación 697 00:29:30,690 --> 00:29:32,970 que para eso tiene que implementar el comparator este 698 00:29:32,970 --> 00:29:34,150 implementar esa capacidad 699 00:29:34,150 --> 00:29:37,769 y implementar el método 700 00:29:37,769 --> 00:29:41,269 poniendo yo aquí lo que me interese 701 00:29:41,269 --> 00:29:42,690 lo que me interese 702 00:29:42,690 --> 00:29:45,769 teniendo en cuenta que el valor de retorno 703 00:29:45,769 --> 00:29:46,910 tendrá que ser negativo 704 00:29:46,910 --> 00:29:48,650 si el primero va antes 705 00:29:48,650 --> 00:29:51,349 positivo si el primero va después 706 00:29:51,349 --> 00:29:53,609 o cero si van a la vez 707 00:29:53,609 --> 00:29:57,430 ¡ala! pues ya tenemos un criterio ahí de comparación 708 00:29:57,430 --> 00:29:58,910 magnífico 709 00:29:58,910 --> 00:29:59,750 pues estupendo 710 00:29:59,750 --> 00:30:01,589 ya le puedo pasar a sort 711 00:30:01,589 --> 00:30:04,109 un objeto de ese criterio 712 00:30:04,109 --> 00:30:05,029 ya se lo puedo pasar 713 00:30:05,029 --> 00:30:11,880 vale, pues vamos a ejecutar esto 714 00:30:11,880 --> 00:30:13,599 pero pasándose los desordenados 715 00:30:13,599 --> 00:30:17,579 para ver que efectivamente los ha ordenado 716 00:30:17,579 --> 00:30:19,740 le paso el 3, le paso el 2 717 00:30:19,740 --> 00:30:22,180 y luego en la posición 1 718 00:30:22,180 --> 00:30:23,819 le paso el número de matrícula 719 00:30:23,819 --> 00:30:24,380 1 720 00:30:24,380 --> 00:30:27,529 vamos a mostrar 721 00:30:27,529 --> 00:30:29,869 sin eliminar 722 00:30:29,869 --> 00:30:32,809 antes y después de ordenar 723 00:30:32,809 --> 00:30:34,930 vamos a mostrar 724 00:30:34,930 --> 00:30:36,950 antes y después de ordenar 725 00:30:36,950 --> 00:30:48,500 vale, pues 726 00:30:48,500 --> 00:30:51,880 aquí están 727 00:30:51,880 --> 00:30:55,220 tal y como los metí 728 00:30:55,220 --> 00:30:57,519 primero el 3, luego el 2 729 00:30:57,519 --> 00:30:59,700 y después de haberle hecho 730 00:30:59,700 --> 00:31:01,420 el sort a la colección 731 00:31:01,420 --> 00:31:03,700 después de haberle hecho esto 732 00:31:03,700 --> 00:31:05,859 el sort, ahora ya 733 00:31:05,859 --> 00:31:07,420 los ha ordenado 734 00:31:07,420 --> 00:31:09,059 por el criterio que yo le he dicho 735 00:31:09,059 --> 00:31:11,660 número de matrícula, por el criterio 736 00:31:11,660 --> 00:31:12,880 que a mi me ha dado la gana decirle 737 00:31:12,880 --> 00:31:18,480 luego las colecciones pues nos dan muchas 738 00:31:18,480 --> 00:31:20,480 cosas ya hechas, que si tuviéramos 739 00:31:20,480 --> 00:31:21,440 que programar son un rollo 740 00:31:21,440 --> 00:31:23,539 Que a mí de repente me apetece 741 00:31:23,539 --> 00:31:24,700 Cambiar el criterio de ordenación 742 00:31:24,700 --> 00:31:27,440 Y quiero ordenar por 743 00:31:27,440 --> 00:31:30,720 Edad 744 00:31:30,720 --> 00:31:33,079 ¿Me puedo hacer otra clase? 745 00:31:33,200 --> 00:31:34,339 ¿Otro criterio de comparación? 746 00:31:35,440 --> 00:31:36,400 ¿Me puedo hacer otro? 747 00:31:38,400 --> 00:31:38,619 ¿Eh? 748 00:31:40,619 --> 00:31:41,099 ¿Crit? 749 00:31:41,380 --> 00:31:41,720 ¿Eh? 750 00:31:43,140 --> 00:31:45,119 A ver, era por no complicarlo, pero venga, sí 751 00:31:45,119 --> 00:31:45,599 Por nombre 752 00:31:45,599 --> 00:31:49,039 Venga, vamos a ordenar por nombre 753 00:31:49,039 --> 00:31:50,259 Por orden alfabético de nombre 754 00:31:50,259 --> 00:31:53,200 estoy usando otro criterio, llamo al mismo método 755 00:31:53,200 --> 00:31:54,640 a sort, llamo al mismo método 756 00:31:54,640 --> 00:31:56,579 pero le voy a pasar otro criterio 757 00:31:56,579 --> 00:31:59,220 tengo que hacer la clase que recoge 758 00:31:59,220 --> 00:32:00,740 ese criterio, tengo que hacerla 759 00:32:00,740 --> 00:32:05,240 pues venga, hacemos esta clase 760 00:32:05,240 --> 00:32:10,009 y esta clase 761 00:32:10,009 --> 00:32:11,970 que implemente el comparator 762 00:32:11,970 --> 00:32:12,990 este de alumno 763 00:32:12,990 --> 00:32:17,849 vale, esta es otra clase con otro 764 00:32:17,849 --> 00:32:18,789 criterio de comparación 765 00:32:18,789 --> 00:32:21,529 vamos a ponerle el criterio 766 00:32:21,529 --> 00:32:28,829 bueno, pues aquí se nos complica, ¿no? 767 00:32:29,509 --> 00:32:30,690 porque tenemos que devolver 768 00:32:30,690 --> 00:32:32,710 negativo si o1 769 00:32:32,710 --> 00:32:33,910 está alfabéticamente 770 00:32:33,910 --> 00:32:36,490 el nombre, perdón, está alfabética antes que o2 771 00:32:36,490 --> 00:32:38,930 o sea, lo que hay que comparar son estas dos cosas 772 00:32:38,930 --> 00:32:41,230 o1.getNombre 773 00:32:41,230 --> 00:32:45,359 y o2.getNombre 774 00:32:45,359 --> 00:32:46,420 esto es lo que hay que comparar 775 00:32:46,420 --> 00:32:47,220 alfabéticamente 776 00:32:47,220 --> 00:32:50,099 si este alfabéticamente 777 00:32:50,099 --> 00:32:52,400 va antes que este otro, me devolverá negativo 778 00:32:52,400 --> 00:32:54,420 si alfabéticamente 779 00:32:54,420 --> 00:32:56,319 van a la vez, o sea, es el mismo nombre 780 00:32:56,319 --> 00:32:57,279 me devolverá cero 781 00:32:57,279 --> 00:33:00,440 y si alfabéticamente este va después que el otro 782 00:33:00,440 --> 00:33:01,359 me devolverá positivo 783 00:33:01,359 --> 00:33:03,319 es lo que yo tengo que hacer 784 00:33:03,319 --> 00:33:05,960 pero comparar alfabéticamente dos cadenas es un rollo 785 00:33:05,960 --> 00:33:07,539 por ahí comparar el primer carácter 786 00:33:07,539 --> 00:33:10,440 si el primer carácter es igual tienes que pasar al segundo 787 00:33:10,440 --> 00:33:11,859 si el segundo es igual 788 00:33:11,859 --> 00:33:13,940 tienes que pasar al tercero 789 00:33:13,940 --> 00:33:15,579 entonces eso lo podemos programar 790 00:33:15,579 --> 00:33:17,640 con dos for estupendamente 791 00:33:17,640 --> 00:33:19,839 uno hace un primer for que va 792 00:33:19,839 --> 00:33:21,619 carácter por carácter y va 793 00:33:21,619 --> 00:33:23,839 luego de forma recursiva 794 00:33:23,839 --> 00:33:26,539 mucho más fácil, se programaría de forma recursiva 795 00:33:26,539 --> 00:33:28,119 es un ejercicio de programación 796 00:33:28,119 --> 00:33:29,400 maravilloso, dos cadenas 797 00:33:29,400 --> 00:33:31,180 ordenalas alfabéticamente 798 00:33:31,180 --> 00:33:33,539 pero bueno 799 00:33:33,539 --> 00:33:36,000 no lo vamos a hacer, ya no estamos para esos trotes 800 00:33:36,000 --> 00:33:37,880 pero sería un ejercicio magnífico 801 00:33:37,880 --> 00:33:39,700 de programación 802 00:33:39,700 --> 00:33:41,059 de pura y dura de toda la vida 803 00:33:41,059 --> 00:33:42,460 ¿por qué no lo vamos a hacer? 804 00:33:42,960 --> 00:33:45,440 porque tanto esto como esto 805 00:33:45,440 --> 00:33:46,680 pertenecen a qué clase 806 00:33:46,680 --> 00:33:49,339 pertenecen a la clase string 807 00:33:49,339 --> 00:33:51,700 y la clase string 808 00:33:51,700 --> 00:33:53,900 afortunadamente tiene muchas cosas ya hechas 809 00:33:53,900 --> 00:33:56,200 la clase string tiene 810 00:33:56,200 --> 00:33:59,220 entre otros 811 00:33:59,220 --> 00:34:01,380 un método por ahí 812 00:34:01,380 --> 00:34:05,740 esto para buscar rápidamente 813 00:34:05,740 --> 00:34:06,599 que era control 814 00:34:06,599 --> 00:34:09,980 ¿cuál era el atajo 815 00:34:09,980 --> 00:34:11,380 para buscar aquí en el editor? 816 00:34:11,539 --> 00:34:12,940 ¿alguien lo... 817 00:34:12,940 --> 00:34:13,920 control F? 818 00:34:14,420 --> 00:34:16,519 si yo busco aquí 819 00:34:16,519 --> 00:34:19,920 compare to 820 00:34:19,920 --> 00:34:21,940 aquí me sale 821 00:34:21,940 --> 00:34:22,960 vale 822 00:34:22,960 --> 00:34:27,239 no, pero yo no quiero esta 823 00:34:27,239 --> 00:34:31,159 compare to 824 00:34:31,159 --> 00:34:36,260 aquí 825 00:34:36,260 --> 00:34:37,599 este 826 00:34:37,599 --> 00:34:40,019 vale, pues resulta 827 00:34:40,019 --> 00:34:41,780 que la clase string tiene un montón de cosas hechas 828 00:34:41,780 --> 00:34:43,840 que ya hemos usado, el length 829 00:34:43,840 --> 00:34:46,500 el charat 830 00:34:46,500 --> 00:34:49,659 vamos 831 00:34:49,659 --> 00:34:52,059 el index of, tiene un montón de cosas ya hechas 832 00:34:52,059 --> 00:34:53,960 bueno, pues tiene un método compareTo 833 00:34:53,960 --> 00:34:56,300 que ya directamente 834 00:34:56,300 --> 00:34:57,699 me devuelve 835 00:34:57,699 --> 00:34:59,920 negativo si la cadena 836 00:34:59,920 --> 00:35:02,340 que llama el compareTo va alfabéticamente 837 00:35:02,340 --> 00:35:03,780 antes que esta 838 00:35:03,780 --> 00:35:06,300 o sea, ya me hace todo el código de la ordenación alfabética 839 00:35:06,300 --> 00:35:08,260 llamando aquí a 840 00:35:08,260 --> 00:35:10,340 a estos compare tools 841 00:35:10,340 --> 00:35:11,699 de las clases string UTF etc 842 00:35:11,699 --> 00:35:14,239 ya me lo hace, me devuelve 843 00:35:14,239 --> 00:35:16,300 negativo si el string que llama 844 00:35:16,300 --> 00:35:18,360 a este método va antes 845 00:35:18,360 --> 00:35:20,719 que este otro, 0 si son iguales 846 00:35:20,719 --> 00:35:22,360 y positivo si el string 847 00:35:22,360 --> 00:35:24,440 que llama a este método va después 848 00:35:24,440 --> 00:35:25,940 que este otro, o sea el compare tool 849 00:35:25,940 --> 00:35:28,380 ya me dice alfabéticamente cual va antes 850 00:35:28,380 --> 00:35:30,360 el que llama al método o el otro 851 00:35:30,360 --> 00:35:32,360 bueno pues hombre si ya tengo 852 00:35:32,360 --> 00:35:33,480 el compare tool string 853 00:35:33,480 --> 00:35:35,300 pues vamos a usarlo aquí 854 00:35:35,300 --> 00:35:37,639 y no vamos a volvernos locos 855 00:35:37,639 --> 00:35:40,420 y hacemos esto 856 00:35:40,420 --> 00:35:45,010 y hacemos 857 00:35:45,010 --> 00:35:47,369 retuno1.getNombre 858 00:35:47,369 --> 00:35:51,570 .compareTu 859 00:35:51,570 --> 00:35:52,210 este otro 860 00:35:52,210 --> 00:35:55,210 o 2.getNombre 861 00:35:55,210 --> 00:35:57,170 voy a bajar abajo esto 862 00:35:57,170 --> 00:35:57,789 para 863 00:35:57,789 --> 00:36:03,340 y ya tenemos el criterio hecho 864 00:36:03,340 --> 00:36:05,820 porque el método compareTu 865 00:36:05,820 --> 00:36:08,099 ya te devuelve negativo, cero 866 00:36:08,099 --> 00:36:10,260 positivo en función del orden alfabético 867 00:36:10,260 --> 00:36:11,840 Del string que llama al método 868 00:36:11,840 --> 00:36:13,099 De este string 869 00:36:13,099 --> 00:36:15,119 Y del string pasado por parámetro 870 00:36:15,119 --> 00:36:16,380 Ya te lo hace 871 00:36:16,380 --> 00:36:18,159 Te compara estos dos strings 872 00:36:18,159 --> 00:36:19,219 El que llama al método 873 00:36:19,219 --> 00:36:20,639 Y este otro 874 00:36:20,639 --> 00:36:23,440 Y ya te devuelve menos uno, cero o uno 875 00:36:23,440 --> 00:36:25,320 Pues aprovechémonos de eso 876 00:36:25,320 --> 00:36:26,559 Llamemos directamente a esto 877 00:36:26,559 --> 00:36:28,039 Y devolvamos eso que ha devuelto él 878 00:36:28,039 --> 00:36:30,900 Pues ala, fenomenal 879 00:36:30,900 --> 00:36:33,719 Ya tenemos otra clase comparator de esta 880 00:36:33,719 --> 00:36:36,159 Que me devuelve el criterio alfabético de ordenación 881 00:36:36,159 --> 00:36:38,019 Según el nombre de los alumnos 882 00:36:38,019 --> 00:36:43,250 bueno, pues si yo ahora vuelvo 883 00:36:43,250 --> 00:36:44,590 a ejecutar esto 884 00:36:44,590 --> 00:36:48,960 ahora me los va a dar 885 00:36:48,960 --> 00:36:50,539 ordenados por nombre 886 00:36:50,539 --> 00:36:59,130 ¿veis? aquí están 887 00:36:59,130 --> 00:37:01,650 por número de matrícula, un, dos y tres 888 00:37:01,650 --> 00:37:03,750 y aquí están 889 00:37:03,750 --> 00:37:05,329 por orden alfabético de nombre 890 00:37:05,329 --> 00:37:06,590 ahí están 891 00:37:06,590 --> 00:37:14,469 ¿vale? luego todo el trabajo que nos ahorramos 892 00:37:14,469 --> 00:37:15,949 pues trabajando con colecciones 893 00:37:15,949 --> 00:37:18,170 pero no podemos olvidar ninguna 894 00:37:18,170 --> 00:37:18,829 otra cosa 895 00:37:18,829 --> 00:37:22,230 ¿vale? para entender lo que los métodos 896 00:37:22,230 --> 00:37:24,230 hacen, para entender lo que nos ofrecen, tenemos 897 00:37:24,230 --> 00:37:26,309 que tener claro, pues, todo el 898 00:37:26,309 --> 00:37:28,269 tema de los interfaces, de implementar métodos, 899 00:37:28,349 --> 00:37:30,269 de un montón de cosas. Tenemos que tener 900 00:37:30,269 --> 00:37:31,349 claras. ¿Vale? 901 00:37:34,610 --> 00:37:35,889 Bueno, hasta aquí más o menos. 902 00:37:36,809 --> 00:37:38,289 ¿O habéis desconectado muchos? 903 00:37:40,210 --> 00:37:41,389 ¿Cuántos habéis desconectado? 904 00:37:42,150 --> 00:37:43,070 Con sinceridad. 905 00:37:44,889 --> 00:37:46,090 ¿Sólo Claudia es sincera? 906 00:37:46,090 --> 00:37:47,190 ¿Y su compañera? 907 00:37:52,170 --> 00:37:53,949 El orden alfabético, 908 00:37:53,949 --> 00:37:56,690 creo que se salta las mayúsculas y las minúsculas 909 00:37:56,690 --> 00:37:58,849 no lo sé 910 00:37:58,849 --> 00:38:00,050 no sé el compare to the string 911 00:38:00,050 --> 00:38:00,650 cómo lo hace 912 00:38:00,650 --> 00:38:05,400 ah, vale, pues 913 00:38:05,400 --> 00:38:09,320 aquí en string 914 00:38:09,320 --> 00:38:11,699 sí, habría que ver cómo 915 00:38:11,699 --> 00:38:12,500 funciona 916 00:38:12,500 --> 00:38:15,719 donde estoy en el criterio nombre 917 00:38:15,719 --> 00:38:17,760 aquí, yo he usado el compare to 918 00:38:17,760 --> 00:38:20,300 que si no las ignora 919 00:38:20,300 --> 00:38:21,719 lo que hace es ponerte antes 920 00:38:21,719 --> 00:38:23,960 todas las minúsculas y luego después de las mayúsculas 921 00:38:23,960 --> 00:38:26,360 Y luego dices tú que en string hay otro 922 00:38:26,360 --> 00:38:28,460 Que es el compare tú 923 00:38:28,460 --> 00:38:29,760 Ignore este de aquí 924 00:38:29,760 --> 00:38:32,719 Efectivamente que te ordena alfabéticamente 925 00:38:32,719 --> 00:38:34,780 Ignorando mayúsculas, minúsculas 926 00:38:34,780 --> 00:38:36,739 Vale, depende del criterio que queramos dar nosotros 927 00:38:36,739 --> 00:38:38,500 Si queremos tenerlo en cuenta 928 00:38:38,500 --> 00:38:39,239 O no tenerlo en cuenta 929 00:38:39,239 --> 00:38:42,800 Bueno, ¿cuántos habían desconectado entonces? 930 00:38:49,250 --> 00:38:50,010 No me lo creo 931 00:38:50,010 --> 00:38:51,530 Que solo 932 00:38:51,530 --> 00:38:53,750 Vale, venga 933 00:38:53,750 --> 00:38:54,809 Vamos a parar un momentito 934 00:38:54,809 --> 00:38:57,110 Para reconectar