1 00:00:00,300 --> 00:00:07,059 Entonces voy a grabar este ejercicio, si por si acaso habláis, me autorizáis a grabar vuestra voz. 2 00:00:07,299 --> 00:00:12,800 Entonces vamos a hacer un pequeño ejercicio sobre uso de listas y cosas por el estilo. 3 00:00:13,039 --> 00:00:21,719 El ejercicio va sobre un cine, en el que se hace una lista de personas que quieren entrar en el cine. 4 00:00:22,460 --> 00:00:28,760 Entonces luego miraremos esta lista y veremos qué hacemos con ella. 5 00:00:28,760 --> 00:00:34,880 y vamos calculando para cada persona que está en la cola para entrar en el cine 6 00:00:34,880 --> 00:00:40,539 el precio de su billete en base a la edad que tiene, ¿vale? 7 00:00:42,759 --> 00:00:46,219 Un cine en un pueblo pequeño nos propone hacer una aplicación 8 00:00:46,219 --> 00:00:51,439 para controlar las personas de una cola de un cine en los grandes estrenos de la película. 9 00:00:52,159 --> 00:00:55,560 Usa una implementación de lista enlazada creada por ti. 10 00:00:55,560 --> 00:01:05,939 Esto aquí no lo hacemos creado por nosotros, ya lo hemos creado, el otro día usamos una lista enlazada normal y así lo probamos. 11 00:01:06,760 --> 00:01:10,219 Un conjunto de personas esperan la cola para sacar una entrada. 12 00:01:10,420 --> 00:01:18,140 Tendremos que calcular el coste de la entrada según la edad de las personas, que sea mínimo 5 años. 13 00:01:18,359 --> 00:01:22,060 La edad de las personas se genera naturalmente entre 5 y 60 años. 14 00:01:22,060 --> 00:01:24,680 Os recomiendo utilizar un método del main 15 00:01:24,680 --> 00:01:29,219 Al final, deberemos mostrar la cantidad total recaudada 16 00:01:29,219 --> 00:01:33,579 El número de personas de la cola se elige al azar entre 0 y 50 17 00:01:33,579 --> 00:01:37,819 Recuerda que al final la lista debe quedar vacía 18 00:01:37,819 --> 00:01:41,680 Una vez que una persona paga, su entrada ya no está en la cola 19 00:01:41,680 --> 00:01:43,920 Esto simula la cola de un cine 20 00:01:43,920 --> 00:01:48,019 Aquí están los precios que son aleatorios y cosas por el estilo 21 00:01:48,019 --> 00:01:49,659 Vamos a intentar hacerlo 22 00:01:49,659 --> 00:01:54,200 Entonces, como aquí son personas, pues la primera cosa que hacemos es crear personas. 23 00:01:59,849 --> 00:02:08,469 A ver, aquí podríamos jugar con algo en plan que haya personas, adolescentes y niños 24 00:02:08,469 --> 00:02:14,210 y hacer que los adolescentes se reten de persona o qué sé yo 25 00:02:14,210 --> 00:02:19,330 y que lo que cambien es el valor del precio que pagan o cosas por el estilo. 26 00:02:19,330 --> 00:02:25,710 Pero como el ejercicio no va tanto de herencia y cosas por el estilo, 27 00:02:25,810 --> 00:02:29,610 sino que va de lista enlazada, pues lo dejo fuera. 28 00:02:30,169 --> 00:02:33,210 Entonces hago persona normal y corriente. 29 00:02:33,930 --> 00:02:37,909 Una persona, lo que me interesa es la edad, principalmente. 30 00:02:39,770 --> 00:02:47,669 Fijaos que en este contexto, el nombre de una persona, el NIF de una persona, no me interesa. 31 00:02:47,669 --> 00:02:53,389 O sea, lo que me interesa es su edad para que sepa el precio que le tengo que cobrar. 32 00:02:53,830 --> 00:03:00,969 Pero en mi programa, pues la clase Persona, sostancialmente, lo que me interesa de verdad es solo la edad. 33 00:03:01,370 --> 00:03:02,969 ¿Podría hacerla más compleja? Sí. 34 00:03:03,270 --> 00:03:09,789 Pero mantenemosla lo más sencillo posible para hacer un ejercicio de utilizo de LinkedList básico. 35 00:03:09,789 --> 00:03:12,949 entonces tendrá un 36 00:03:12,949 --> 00:03:21,870 constructor 37 00:03:21,870 --> 00:03:27,539 creo una persona, le pongo su edad 38 00:03:27,539 --> 00:03:29,580 y si quiero 39 00:03:29,580 --> 00:03:31,539 hacerla privada le pongo un get 40 00:03:31,539 --> 00:03:32,080 vale 41 00:03:32,080 --> 00:03:37,139 y esto es public 42 00:03:37,139 --> 00:03:38,460 int 43 00:03:38,460 --> 00:03:41,020 get edad 44 00:03:41,020 --> 00:03:45,280 return edad 45 00:03:45,280 --> 00:03:50,520 para que en cualquier momento 46 00:03:50,520 --> 00:03:51,340 pueda saber 47 00:03:51,340 --> 00:03:53,879 la edad de una persona 48 00:03:53,879 --> 00:03:55,520 entonces 49 00:03:55,520 --> 00:03:57,740 prácticamente todo va en un main 50 00:03:57,740 --> 00:03:59,560 este ejercicio es muy sencillito 51 00:03:59,560 --> 00:04:01,860 como ejemplo inicial 52 00:04:01,860 --> 00:04:03,360 pues me hago mi 53 00:04:03,360 --> 00:04:05,199 clase 54 00:04:05,199 --> 00:04:08,400 cinema 55 00:04:08,400 --> 00:04:10,740 entonces 56 00:04:10,740 --> 00:04:13,599 un cinema lo que tiene 57 00:04:13,599 --> 00:04:14,580 es 58 00:04:14,580 --> 00:04:16,220 cinema es italiano 59 00:04:16,220 --> 00:04:17,839 español 60 00:04:17,839 --> 00:04:25,949 entonces 61 00:04:25,949 --> 00:04:27,829 lo que podemos hacer 62 00:04:27,829 --> 00:04:33,290 o crear una clase cine y luego crear un objeto cine trabajar con él o directamente hacerlo en 63 00:04:33,290 --> 00:04:38,629 el main vale como aquí vamos a utilizar la linked list pues hagamos el main directamente luego si 64 00:04:38,629 --> 00:04:44,810 necesitamos algún método lo haremos estático entonces la idea es que ahora yo me cree una 65 00:04:44,810 --> 00:04:50,870 cola de personas vale entonces el primer paso sería crear una cola de persona me han dicho 66 00:04:50,870 --> 00:04:56,550 de utilizar una lista enlazada en teoría la parte difícil entre comillas de este ejercicio sería que 67 00:04:56,550 --> 00:05:00,689 nosotros definiremos nuestra propia lista enlazada que pero ya hemos hecho 68 00:05:00,689 --> 00:05:07,009 entonces uso una linked list normal linked list 69 00:05:07,370 --> 00:05:25,100 de persona o la es igual al año linked list de persona así 70 00:05:25,100 --> 00:05:27,939 heredo esta cosa aquí 71 00:05:27,939 --> 00:05:32,240 y ya está, perdón, importo esta cosa aquí y ya está 72 00:05:32,240 --> 00:05:37,120 también podría hacer que como esta cola 73 00:05:37,120 --> 00:05:41,100 la quiero llenar con números aleatorios de personas aleatorias 74 00:05:41,100 --> 00:05:45,139 podría en vez de crearla aquí directamente, pues hacer un 75 00:05:45,139 --> 00:05:49,399 metodito que me crea la cola nueva y me devuelva directamente 76 00:05:49,399 --> 00:05:53,120 la cola, ¿vale? entonces esto me lo copio y simplemente 77 00:05:53,120 --> 00:05:55,240 aquí pongo un crea 78 00:05:55,240 --> 00:05:55,639 cola 79 00:05:55,639 --> 00:06:01,720 este de aquí entiende 80 00:06:01,720 --> 00:06:03,860 que tiene que devolver un linked list persona 81 00:06:03,860 --> 00:06:05,100 por ahora devuelve null 82 00:06:05,100 --> 00:06:07,779 pero nosotros lo que 83 00:06:07,779 --> 00:06:08,680 haremos es 84 00:06:08,680 --> 00:06:11,500 linked 85 00:06:11,500 --> 00:06:12,639 list 86 00:06:12,639 --> 00:06:14,740 de persona 87 00:06:14,740 --> 00:06:20,060 c, vale, de cola, es igual 88 00:06:20,060 --> 00:06:22,019 a esta cosa aquí, se la creo aquí dentro 89 00:06:22,019 --> 00:06:23,899 y luego la devuelvo 90 00:06:23,899 --> 00:06:25,879 así 91 00:06:25,879 --> 00:06:36,740 Entonces lo que pasará aquí es que llamo este método, este método es el que ha encargado de crearme un cierto número de personas con un cierto número de edad cada persona, ¿vale? 92 00:06:36,879 --> 00:06:42,879 Y luego después me devuelve este enlace aquí y aquí desde el main lo usaré. 93 00:06:44,360 --> 00:06:44,959 ¿Dudas hasta aquí? 94 00:06:56,720 --> 00:07:00,259 Porque estoy en un entorno estático, entonces no hay un objeto. 95 00:07:00,779 --> 00:07:05,319 Y cuando llamo un método, no puedo llamar un método sobre un objeto. 96 00:07:05,319 --> 00:07:07,480 si yo este de aquí le quito 97 00:07:07,480 --> 00:07:10,339 ahora Creacola lo tengo que crear sobre un objeto 98 00:07:10,339 --> 00:07:11,839 sobre un objeto de tipo cine 99 00:07:11,839 --> 00:07:14,860 pero como no tengo un objeto cine 100 00:07:14,860 --> 00:07:16,540 no hay atributos en un objeto cine 101 00:07:16,540 --> 00:07:17,740 no hay métodos propios de cine 102 00:07:17,740 --> 00:07:20,379 yo esto lo podría hacer con cine 103 00:07:20,379 --> 00:07:22,480 c es igual a newCine 104 00:07:22,480 --> 00:07:26,250 y ahora aquí llamar 105 00:07:26,250 --> 00:07:28,490 c.Creacola 106 00:07:28,490 --> 00:07:30,769 esto es admisible porque estoy creando un cine 107 00:07:30,769 --> 00:07:32,889 pero yo no estoy haciendo 108 00:07:32,889 --> 00:07:35,250 una cadena de cines 109 00:07:35,250 --> 00:07:37,129 donde creo distintos 110 00:07:37,129 --> 00:07:39,009 cines, una rey liste de cine 111 00:07:39,009 --> 00:07:40,670 una rey de cines 112 00:07:40,670 --> 00:07:42,829 y luego digo, en el cine 1 113 00:07:42,829 --> 00:07:45,069 pasa esto, en el cine 2 pasa esto, en el cine 3 114 00:07:45,069 --> 00:07:46,689 pasa esto, ¿que lo puedo hacer? Sí 115 00:07:46,689 --> 00:07:48,250 a lo mejor después, mejor 116 00:07:48,250 --> 00:07:51,209 modificamos esto para que haya varios cines 117 00:07:51,209 --> 00:07:52,170 pues lo podría hacer 118 00:07:52,170 --> 00:07:55,089 pero por ahora, como esto es un 119 00:07:55,089 --> 00:07:56,990 cine, es el único cine que tengo, es el cine 120 00:07:56,990 --> 00:07:59,069 del pueblo, y gestiono 121 00:07:59,069 --> 00:08:00,949 así, pues entonces no estoy 122 00:08:00,949 --> 00:08:02,129 creando objetos cine 123 00:08:02,129 --> 00:08:04,910 entonces si estoy en un entorno estático 124 00:08:04,910 --> 00:08:11,670 pues no puede hacer el método no estático porque si no aquí no sabría sobre qué llamar 125 00:08:12,670 --> 00:08:21,009 entonces aquí necesito una variable aleatoria vale que aquí el enunciado me decía que hay 126 00:08:21,009 --> 00:08:34,190 entre 0 y 50 personas vale entonces int en una persona es igual a por ejemplo hago un 127 00:08:34,190 --> 00:08:49,090 Un random o mathint de math.random multiplicado 50, 51. 128 00:08:49,269 --> 00:09:00,740 Como es desde 0 a 50, si esto me da 0, 0 por 50 dará 0. 129 00:09:01,259 --> 00:09:06,539 Si esto me da 0,999999, dará 50,999999. 130 00:09:06,539 --> 00:09:11,700 Y por lo tanto, casteado a int, me lo transforma en 50. 131 00:09:12,220 --> 00:09:14,299 Por lo tanto, esta cosa aquí me da de 0 a 50. 132 00:09:15,840 --> 00:09:22,179 Y ahora voy a hacer este número de personas veces 1, añádeme una persona. 133 00:09:22,840 --> 00:09:29,080 Por lo tanto, lo que haré es for int y es igual a 0 y menor que num personas. 134 00:09:29,080 --> 00:09:33,840 Num personas y más más. 135 00:09:33,840 --> 00:09:35,960 Esto es por 136 00:09:35,960 --> 00:09:37,779 Nun personas veces 137 00:09:37,779 --> 00:09:39,659 Lo que hago es 138 00:09:39,659 --> 00:09:41,179 Añadir 139 00:09:41,179 --> 00:09:44,059 Pues no sé dónde estaba 140 00:09:44,059 --> 00:09:45,220 Pero bueno, sigo 141 00:09:45,220 --> 00:09:46,960 Entonces 142 00:09:46,960 --> 00:09:50,019 Estamos haciendo por 143 00:09:50,019 --> 00:09:51,899 Nun personas veces, ahora tengo que crear 144 00:09:51,899 --> 00:09:53,779 Personas y añadirlas a la cola, ¿vale? 145 00:09:53,899 --> 00:09:56,080 Entonces por este número de veces creo una nueva 146 00:09:56,080 --> 00:09:57,799 Persona, lo que hago es 147 00:09:57,799 --> 00:09:59,899 Ac.add 148 00:09:59,899 --> 00:10:01,919 New 149 00:10:01,919 --> 00:10:03,139 Persona 150 00:10:03,139 --> 00:10:05,500 de una cierta edad 151 00:10:05,500 --> 00:10:07,980 ahora tengo que darle la edad 152 00:10:07,980 --> 00:10:09,879 la edad tiene que ser un número aleatorio 153 00:10:09,879 --> 00:10:11,960 desde 5 hasta 60 154 00:10:11,960 --> 00:10:12,700 si no me equivoco 155 00:10:12,700 --> 00:10:14,639 por lo tanto es 156 00:10:14,639 --> 00:10:18,500 int 157 00:10:18,500 --> 00:10:21,860 de math 158 00:10:21,860 --> 00:10:23,980 punto random 159 00:10:23,980 --> 00:10:26,799 multiplicado 160 00:10:26,799 --> 00:10:29,000 56 161 00:10:29,000 --> 00:10:33,240 y a esto 162 00:10:33,240 --> 00:10:35,899 le sumo 163 00:10:35,899 --> 00:10:38,000 5 164 00:10:38,000 --> 00:10:41,279 random es un método 165 00:10:41,279 --> 00:10:44,320 esto debería 166 00:10:44,320 --> 00:10:45,879 a ver 167 00:10:45,879 --> 00:10:47,159 esta es la paréntesis 168 00:10:47,159 --> 00:10:49,200 esta es la paréntesis 169 00:10:49,200 --> 00:10:52,100 de esta cosa 170 00:10:52,100 --> 00:10:53,779 esto debería funcionar 171 00:10:53,779 --> 00:10:54,639 entonces 172 00:10:54,639 --> 00:10:57,399 por no sé cuantas veces 173 00:10:57,399 --> 00:10:59,879 me añade una persona con no sé cuantos años 174 00:10:59,879 --> 00:11:01,279 así que cada vez 175 00:11:01,279 --> 00:11:03,600 es una cosa distinta 176 00:11:03,600 --> 00:11:05,320 si quiero 177 00:11:05,320 --> 00:11:14,220 al final aquí para que tenga una idea de lo que has hecho escribo en pantalla algunas cosas cola 178 00:11:14,220 --> 00:11:39,370 hay en cola puntos como sé cuántas personas hay en cola exactos de puntos 6 personas y si quiero 179 00:11:39,370 --> 00:11:59,990 ver la edad de las personas cómo podría hacer para para lo hacemos después porque así utilizamos un 180 00:11:59,990 --> 00:12:05,769 poquito las listas esto me dice simplemente que hay un cierto número de personas en cola 181 00:12:05,769 --> 00:12:19,590 vale aquí para ver la cosa puede hacer un siso de cola veo que hay 26 personas y estas son las 182 00:12:19,590 --> 00:12:23,149 26 personas, si lo lanzo otra vez 183 00:12:23,149 --> 00:12:27,610 ahora hay 42 personas y estas son las personas, está claro que las personas 184 00:12:27,610 --> 00:12:31,710 no las veo, entonces para poderlas 185 00:12:31,710 --> 00:12:39,730 ver, ¿qué hago? para que vea algo interesante de persona 186 00:12:39,730 --> 00:12:47,009 ¿qué hago? me voy a persona y hago 187 00:12:47,009 --> 00:12:52,460 public string to string 188 00:12:52,460 --> 00:13:00,490 return persona 189 00:13:00,490 --> 00:13:05,690 de edad 190 00:13:05,690 --> 00:13:08,750 años 191 00:13:08,750 --> 00:13:14,940 entonces ahora 192 00:13:14,940 --> 00:13:17,960 si lo lanzo veo que hay una persona de 32 años 193 00:13:17,960 --> 00:13:19,179 una persona de 6 años 194 00:13:19,179 --> 00:13:21,980 una persona de 60, 26 195 00:13:21,980 --> 00:13:22,700 42 196 00:13:22,700 --> 00:13:25,059 hay todas las personas 197 00:13:25,059 --> 00:13:26,220 vale 198 00:13:26,220 --> 00:13:30,009 ok 199 00:13:30,009 --> 00:13:33,529 entonces tengo mi 200 00:13:33,529 --> 00:13:36,330 cola de personas 201 00:13:36,330 --> 00:13:37,850 este de aquí 202 00:13:37,850 --> 00:13:39,769 a lo mejor lo dejo allí pero 203 00:13:39,769 --> 00:13:43,870 ahora tengo 204 00:13:43,870 --> 00:13:45,950 lo que tengo que hacer es empezar 205 00:13:45,950 --> 00:13:47,470 a seguir esta 206 00:13:47,470 --> 00:13:49,210 lista, ¿vale? 207 00:13:49,669 --> 00:13:52,330 para sustancialmente intentar 208 00:13:52,330 --> 00:13:55,110 hacerles pagar, ¿vale? 209 00:13:55,110 --> 00:13:57,529 en base a la edad que tienen 210 00:13:57,529 --> 00:13:59,350 quiero que paguen más 211 00:13:59,350 --> 00:14:00,490 o menos, ¿vale? 212 00:14:00,570 --> 00:14:01,970 entonces tendré un int 213 00:14:01,970 --> 00:14:07,019 recaudación 214 00:14:07,019 --> 00:14:10,970 es igual a 0 215 00:14:10,970 --> 00:14:13,070 al principio, y ahora por cada 216 00:14:13,070 --> 00:14:17,309 elemento de la lista, lo que tengo que hacer es sumar el precio 217 00:14:17,309 --> 00:14:21,389 correcto, ¿sí? Entonces, puedo hacer 218 00:14:21,389 --> 00:14:25,129 de varias formas para hacer 219 00:14:25,129 --> 00:14:29,210 esta cosa, ¿vale? Teniendo en cuenta también que yo quiero que al final 220 00:14:29,210 --> 00:14:33,029 pues esta cola aquí sea vacía, ¿vale? 221 00:14:33,149 --> 00:14:37,350 Esto representa la cola real, han venido la gente y ahora cada vez 222 00:14:37,350 --> 00:14:40,730 que yo cobro un billete, pues esto se va de la cola, ¿sí? 223 00:14:40,730 --> 00:14:41,830 y desaparece 224 00:14:41,830 --> 00:14:43,789 entonces, una opción 225 00:14:43,789 --> 00:14:46,090 sería algo como 226 00:14:46,090 --> 00:14:51,370 we before 227 00:14:51,370 --> 00:14:54,409 persona 228 00:14:54,409 --> 00:14:56,690 p dos puntos cola 229 00:14:56,690 --> 00:15:02,259 p punto 230 00:15:02,259 --> 00:15:05,039 recaudación 231 00:15:05,039 --> 00:15:09,039 más igual 232 00:15:09,039 --> 00:15:18,330 vamos a verlo 233 00:15:18,330 --> 00:15:20,330 recaudación más igual 234 00:15:20,330 --> 00:15:25,570 p.get 235 00:15:25,570 --> 00:15:27,769 edad, no, bueno, no, esto 236 00:15:27,769 --> 00:15:31,970 esto debería ser el precio 237 00:15:31,970 --> 00:15:36,190 de p.get 238 00:15:36,190 --> 00:15:43,440 edad, ¿esto qué es? es un método que me calcula en base a la edad 239 00:15:43,440 --> 00:15:46,279 el precio, ¿vale? entonces vamos a ver 240 00:15:46,279 --> 00:15:51,299 este método aquí, y aquí recibo 241 00:15:51,299 --> 00:16:03,070 un entero y devuelvo un precio vale entonces interprecio es igual a cero y 242 00:16:03,070 --> 00:16:13,259 yo hago ahí tres franjas de edad de 5 a 10 11 17 o mayor que 18 vale entonces o 243 00:16:13,259 --> 00:16:24,620 con un if o con switch si edad menor que 244 00:16:24,620 --> 00:16:26,200 8, ¿cuánto era? 245 00:16:27,879 --> 00:16:28,399 10 246 00:16:28,399 --> 00:16:30,299 menor o igual que 10 247 00:16:30,299 --> 00:16:33,639 precio 248 00:16:33,639 --> 00:16:35,340 es igual 249 00:16:35,340 --> 00:16:37,440 a un euro 250 00:16:37,440 --> 00:16:39,799 lo que ponga aquí, ¿vale? 251 00:16:40,580 --> 00:16:41,500 el save 252 00:16:41,500 --> 00:16:44,679 edad mayor o igual 253 00:16:44,679 --> 00:16:45,379 a 18 254 00:16:45,379 --> 00:16:48,159 entonces 255 00:16:48,159 --> 00:16:50,799 precio es igual a 256 00:16:50,799 --> 00:16:53,100 3,5 257 00:16:53,100 --> 00:16:54,559 era un double 258 00:16:54,559 --> 00:17:17,960 Sí, pues este es un doble, esto será un doble, esto será 3.5, else precio es igual a 2.5. 259 00:17:17,960 --> 00:17:20,059 vale, ahora 260 00:17:20,059 --> 00:17:23,119 esta es una forma de hacerlo, a lo mejor es fea 261 00:17:23,119 --> 00:17:25,220 no es muy, estaría más 262 00:17:25,220 --> 00:17:27,240 interesante a lo mejor definir 263 00:17:27,240 --> 00:17:29,339 franjas en una array 264 00:17:29,339 --> 00:17:31,460 y en base a la array 265 00:17:31,460 --> 00:17:33,200 que yo tenga, pues haga pagar 266 00:17:33,200 --> 00:17:35,539 una cosa u otra, o hacer una estructura 267 00:17:35,539 --> 00:17:36,640 que me diga 268 00:17:36,640 --> 00:17:39,180 de alguna forma cuánto costa, porque esta es 269 00:17:39,180 --> 00:17:41,140 muy hardcoded, o que 270 00:17:41,140 --> 00:17:42,740 esto lo saque por algún lado 271 00:17:42,740 --> 00:17:45,000 y en los precios los ponga 272 00:17:45,000 --> 00:17:47,000 en constantes arriba 273 00:17:47,000 --> 00:17:49,380 para que si luego lo modifico, solo tengo que modificarlo allí, 274 00:17:49,779 --> 00:17:53,980 pues todas estas consideraciones derivan de lo que sabemos de antes de programación 275 00:17:53,980 --> 00:17:55,039 y se pueden hacer, ¿vale? 276 00:17:55,380 --> 00:17:58,400 Pero ahora para dejarlo muy sencillo, pues esto, ¿sí? 277 00:17:59,059 --> 00:18:02,279 Entonces, esto me devuelve el precio en base a la edad que tiene, ¿vale? 278 00:18:02,359 --> 00:18:05,380 Si es menor o igual que 10.1, si es mayor o igual que 18.1, 279 00:18:05,380 --> 00:18:08,880 y si no es ni esto ni esto, quiere decir que es entre 11 y 17, 280 00:18:09,220 --> 00:18:12,000 y por lo tanto cae aquí, ¿sí? 281 00:18:14,480 --> 00:18:17,119 Entonces, aquí me da la recaudación. 282 00:18:17,119 --> 00:18:46,019 Siso, cola, vamos a ver qué pasa. Lanzo, bueno, Siso, el cine gana, más recaudación, más euros. Muy sencillo, ¿sí? 283 00:18:46,019 --> 00:18:48,319 entonces había 37 personas 284 00:18:48,319 --> 00:18:50,259 pa pa pa, 28 euros 285 00:18:50,259 --> 00:18:52,359 ¿vale? ahora habría que comprobar si esto 286 00:18:52,359 --> 00:18:52,880 es verdad 287 00:18:52,880 --> 00:18:56,500 ¿vale? para hacer una comprobación 288 00:18:56,500 --> 00:18:58,119 fácil, por ejemplo, puedo 289 00:18:58,119 --> 00:19:00,259 disminuir el 290 00:19:00,259 --> 00:19:02,339 puedo hacer que crea cola 291 00:19:02,339 --> 00:19:05,319 int 292 00:19:05,319 --> 00:19:06,400 max 293 00:19:06,400 --> 00:19:09,660 ¿vale? y lo que haga 294 00:19:09,660 --> 00:19:11,519 aquí es un int max 295 00:19:11,519 --> 00:19:14,039 y entonces 296 00:19:14,039 --> 00:19:15,920 aquí ponga max más 1 297 00:19:15,920 --> 00:19:19,359 vale, de esta forma me crea 298 00:19:19,359 --> 00:19:21,039 el número max de personas 299 00:19:21,039 --> 00:19:22,940 cuando yo llamo aquí 300 00:19:22,940 --> 00:19:24,519 bueno, a cola 301 00:19:24,519 --> 00:19:27,099 en vez de int max le pongo 3 302 00:19:27,099 --> 00:19:29,759 entonces con esto me hace una cola de 3 personas 303 00:19:29,759 --> 00:19:31,700 de esta forma si que puedo 304 00:19:31,700 --> 00:19:33,640 más o menos ver, bueno de 2 personas 305 00:19:33,640 --> 00:19:34,099 porque menos 306 00:19:34,099 --> 00:19:37,559 entonces max, que ha pasado 307 00:19:37,559 --> 00:19:40,079 tititititititit 308 00:19:40,079 --> 00:19:49,930 ah bueno si 309 00:19:49,930 --> 00:19:51,890 porque no me lo hace 310 00:19:51,890 --> 00:19:53,890 de esas personas, es un número de 1 a 3 311 00:19:53,890 --> 00:19:55,490 Y ha elegido 2, ¿vale? 312 00:19:55,650 --> 00:19:56,630 Ok, perfecto 313 00:19:56,630 --> 00:19:57,230 Es aleatorio 314 00:19:57,230 --> 00:19:59,309 Pero, de todas formas, pocas personas 315 00:19:59,309 --> 00:20:01,309 Tengo una de 32 años y una de 10 316 00:20:01,309 --> 00:20:05,190 Por lo tanto, esto debería pagar 3,50 euros 317 00:20:05,190 --> 00:20:08,809 Y este de aquí, que es 10, 1 euro 318 00:20:08,809 --> 00:20:10,349 Y esto sale 4 euros 319 00:20:10,349 --> 00:20:11,230 Ha hecho algo raro 320 00:20:11,230 --> 00:20:15,589 Vamos a comprobar el precio 321 00:20:15,589 --> 00:20:19,180 Mayor o igual de 10 es 1 euro 322 00:20:19,180 --> 00:20:25,059 Y mayor de 32 es 3,5 323 00:20:25,059 --> 00:20:26,980 Ah, claro, porque esto he usado enteros 324 00:20:26,980 --> 00:20:29,339 y entonces el .5 es desaparecido 325 00:20:29,339 --> 00:20:32,849 entonces 326 00:20:32,849 --> 00:20:34,910 la declaración tiene que ser un doble 327 00:20:34,910 --> 00:20:38,160 vamos a ver ahora 328 00:20:38,160 --> 00:20:40,740 ahora ya me pone 329 00:20:40,740 --> 00:20:41,880 el .5 330 00:20:41,880 --> 00:20:44,740 tenemos 3 personas 331 00:20:44,740 --> 00:20:46,579 mayores de 18, 3, 6, 9 332 00:20:46,579 --> 00:20:48,539 más 1 de 50, pues 10 y 50 333 00:20:48,539 --> 00:20:50,619 parece que sí, después de hacer las pruebas 334 00:20:50,619 --> 00:20:54,160 estos 9 años debería pagar 1 335 00:20:54,160 --> 00:20:56,920 justo, más 7 336 00:20:56,920 --> 00:20:57,579 8 euros 337 00:20:57,579 --> 00:20:59,539 parece funcionar 338 00:20:59,539 --> 00:21:01,740 vuelvo a poner que 339 00:21:01,740 --> 00:21:04,480 esta aquí son 50 personas 340 00:21:04,480 --> 00:21:05,900 y ya está 341 00:21:05,900 --> 00:21:08,079 ¿vale? pero el problema 342 00:21:08,079 --> 00:21:10,380 es que después de la cola 343 00:21:10,380 --> 00:21:13,059 o sea, de aquí 344 00:21:13,059 --> 00:21:15,779 mi cola sigue con gente 345 00:21:15,779 --> 00:21:17,000 ¿vale? 346 00:21:18,279 --> 00:21:20,220 y yo podría hacer 347 00:21:20,220 --> 00:21:21,779 aquí ahora, vale, perfecto 348 00:21:21,779 --> 00:21:23,940 hago, después de haberlo hecho todo 349 00:21:23,940 --> 00:21:26,579 cola.clear 350 00:21:26,579 --> 00:21:31,309 ya está 351 00:21:31,309 --> 00:21:32,410 cola vacía 352 00:21:32,410 --> 00:21:37,230 pero esto es feo 353 00:21:37,230 --> 00:21:39,349 porque no está simulando 354 00:21:39,349 --> 00:21:41,430 que una persona paga y se va de la cola 355 00:21:41,430 --> 00:21:42,789 una persona paga y se va de la cola 356 00:21:42,789 --> 00:21:45,349 ¿sí? estoy más bien diciendo 357 00:21:45,349 --> 00:21:47,150 que antes pago todos y luego se van todos 358 00:21:47,150 --> 00:21:49,089 que es una cosa que no simula 359 00:21:49,089 --> 00:21:50,769 lo que estamos haciendo, por lo tanto 360 00:21:50,769 --> 00:21:53,329 hagámoslo de otra forma, que cuando uno ha pagado 361 00:21:53,329 --> 00:21:54,450 pues se vaya 362 00:21:54,450 --> 00:21:56,750 ¿cómo hago aquí 363 00:21:56,750 --> 00:21:59,130 para quitarle la cola? podría hacer 364 00:21:59,130 --> 00:22:01,349 cola.remove 365 00:22:02,049 --> 00:22:03,029 remove 366 00:22:03,029 --> 00:22:05,430 el cola.remove 367 00:22:05,430 --> 00:22:07,670 puede hacer dos cosas 368 00:22:07,670 --> 00:22:08,849 o 369 00:22:08,849 --> 00:22:11,809 o sea, tres en concreto 370 00:22:11,809 --> 00:22:12,690 no sé si habéis visto 371 00:22:12,690 --> 00:22:17,630 tiene un remove sin nada 372 00:22:17,630 --> 00:22:19,390 un remove con int 373 00:22:19,390 --> 00:22:20,710 un remove con object 374 00:22:20,710 --> 00:22:23,450 si yo hago remove a secas 375 00:22:23,450 --> 00:22:25,789 quita el primer 376 00:22:25,789 --> 00:22:26,730 elemento de la lista 377 00:22:26,730 --> 00:22:29,950 si yo hago int index 378 00:22:29,950 --> 00:22:30,990 es 379 00:22:30,990 --> 00:22:33,970 la persona en el índice este de aquí 380 00:22:33,970 --> 00:22:35,670 si yo hago int object 381 00:22:35,670 --> 00:22:41,369 pues entonces me busca este object y me lo remueve vale vamos a probar con el primero 382 00:22:51,279 --> 00:22:55,200 pero si te fijas removeFist y remove hace lo mismo 383 00:22:57,200 --> 00:23:02,700 porque por defecto si yo hago como el add nosotros hemos usado el add 384 00:23:04,579 --> 00:23:15,079 sin embargo hay un addFirst y un addLast pero con add si yo uso addRemove estoy haciendo 385 00:23:15,079 --> 00:23:22,240 ADD LAST y REMOVE FIRST 386 00:23:22,240 --> 00:23:35,220 otra cosa interesante que podría mirar es que devuelve remove, devuelve a una persona 387 00:23:35,220 --> 00:23:46,839 ahora vamos a ver qué pasa 388 00:23:46,839 --> 00:23:52,480 ¿Qué es esto? 389 00:23:52,480 --> 00:23:59,200 Concurrent Modification Exception 390 00:23:59,200 --> 00:24:06,299 El problema de esto es que nosotros estamos viajando sobre una lista 391 00:24:06,299 --> 00:24:16,079 y mientras estamos mirando esta lista, estamos machacando la lista misma, quitando objetos. 392 00:24:16,980 --> 00:24:24,339 Entonces, esta cosa que estaba visionando la lista, de repente se encuentra en una lista que no es el objeto original. 393 00:24:24,339 --> 00:24:38,480 Y como no es el objeto original, pues hay como si hubiese dos cosas que están trabajando sobre un mismo objeto, sobre la misma lista, pero están cambiando, o sea, lo están cambiando los dos a la vez. 394 00:24:38,880 --> 00:24:44,559 Y eso, como están cambiando los dos a la vez, es un concurrent modification, modificación concurrente. 395 00:24:44,559 --> 00:24:48,519 No es exactamente concurrente porque hay un hilo solo de ejecución 396 00:24:48,519 --> 00:24:54,720 Pero sí que él se encuentra a volver a pillar el siguiente elemento de una cola 397 00:24:54,720 --> 00:24:56,740 Pero este objeto ha sido modificado 398 00:24:56,740 --> 00:24:58,799 Y entonces se lía 399 00:24:58,799 --> 00:25:02,279 Y este problema sale con el forEach 400 00:25:02,279 --> 00:25:05,599 O sea, el forEach se usa y es útil 401 00:25:05,599 --> 00:25:10,759 Mientras que tú quieras hacer algo por cada uno de los elementos de la vista 402 00:25:10,759 --> 00:25:22,759 perfecto pero si lo que quieres hacer es además removerlo pues forEach causa este problema vamos 403 00:25:22,759 --> 00:25:31,940 a probar con iterato, forEach debe utilizar un método forEach si vamos a ver debería ahora ya 404 00:25:31,940 --> 00:25:50,279 me pierdo a este nivel de profundidad de java pero si vas a ver java api iterable creo que 405 00:25:50,279 --> 00:26:02,359 foreach pic usa más esta cosa aquí pero no lo sé es una suposición aún así vamos a ver con 406 00:26:02,359 --> 00:26:09,900 iterator si lo hace o no entonces como con esto me da problemas lo marco un momento luego vemos 407 00:26:09,900 --> 00:26:11,640 tengo otra forma de hacerla 408 00:26:11,640 --> 00:26:13,019 y digo for 409 00:26:13,019 --> 00:26:15,559 no, for no 410 00:26:15,559 --> 00:26:16,779 iterator 411 00:26:16,779 --> 00:26:18,519 iterator 412 00:26:18,519 --> 00:26:20,660 de persona 413 00:26:20,660 --> 00:26:24,170 it 414 00:26:24,170 --> 00:26:26,210 es igual a new 415 00:26:26,210 --> 00:26:30,529 no, es igual a cola.iterator 416 00:26:30,529 --> 00:26:31,589 si 417 00:26:31,589 --> 00:26:33,990 me importo 418 00:26:33,990 --> 00:26:35,089 la clase iterator 419 00:26:35,089 --> 00:26:37,309 y ahora digo 420 00:26:37,309 --> 00:26:37,809 will 421 00:26:37,809 --> 00:26:40,990 it.asNext 422 00:26:40,990 --> 00:26:46,900 y hago lo mismo 423 00:26:46,900 --> 00:26:54,049 solo que ahora mi persona 424 00:26:54,049 --> 00:26:55,609 p es igual a 425 00:26:55,609 --> 00:26:56,589 este punto next 426 00:26:56,589 --> 00:27:05,099 y luego hago esto, esto funcionará 427 00:27:05,099 --> 00:27:06,960 pum 428 00:27:06,960 --> 00:27:08,599 tampoco 429 00:27:08,599 --> 00:27:11,200 vale, o sea que aquí 430 00:27:11,200 --> 00:27:12,859 tengo un problema de 431 00:27:12,859 --> 00:27:15,119 modificar la 432 00:27:15,119 --> 00:27:19,920 la lista 433 00:27:19,920 --> 00:27:22,319 la estructura 434 00:27:22,319 --> 00:27:24,480 mientras la estoy utilizando 435 00:27:24,480 --> 00:27:45,049 Esto puede crear problemas. Entonces tenemos que encontrar otra forma de hacerlo, o borrarla por entero como hemos hecho, o encontrar un modo distinto de hacerlo. 436 00:27:46,329 --> 00:27:51,289 Vamos a pensar otro modo. ¿Cómo podemos hacer esta cosa? 437 00:27:51,289 --> 00:28:24,170 cuidado porque ahora estamos utilizando objetos entrelazado entre ellos entonces hay que ver 438 00:28:24,170 --> 00:28:29,869 porque cuando copias la cola hay que ver si te copias o la cola o te copia también los objetos 439 00:28:29,869 --> 00:28:39,809 que tiene dentro porque probablemente no te los copia el objeto que tiene yo creo que son 440 00:28:39,809 --> 00:28:45,089 referencias a los mismos objetos pero no lo sé hay que ver cómo se hace o cómo la implementa 441 00:28:45,089 --> 00:29:03,839 tu copia vale depende de qué estás usando diga por qué es igual literalmente es igual es la 442 00:29:03,839 --> 00:29:18,220 potencia de las añadas o los quitarás promete así yo en vez que un linked list aquí en vez de un 443 00:29:18,220 --> 00:29:33,589 linked list creo un list vale entonces me permite aquí en vez de un linked list puedo crear una 444 00:29:33,589 --> 00:30:01,579 realista no me cambia nada pero esto funciona pero no gana por qué no porque porque he comentado los 445 00:30:01,579 --> 00:30:11,500 dos iteradores por eso claro no hace nada si pillo un iterador o lo que sea ahora cola punto remove 446 00:30:11,500 --> 00:30:12,940 no existe 447 00:30:12,940 --> 00:30:17,599 porque Oracle es una lista 448 00:30:17,599 --> 00:30:19,779 y lista 449 00:30:19,779 --> 00:30:20,799 tiene 450 00:30:20,799 --> 00:30:21,880 remove 451 00:30:21,880 --> 00:30:25,940 index o remove object 452 00:30:25,940 --> 00:30:27,299 o remove all 453 00:30:27,299 --> 00:30:28,539 o remove first 454 00:30:28,539 --> 00:30:34,200 vamos a ver 455 00:30:34,200 --> 00:30:37,849 sigue habiendo 456 00:30:37,849 --> 00:30:39,470 este error 457 00:30:39,470 --> 00:30:42,630 ahora el problema que nosotros tenemos con esto 458 00:30:42,630 --> 00:30:44,589 es que 459 00:30:44,589 --> 00:30:46,849 la 460 00:30:46,849 --> 00:30:56,029 la cola yo quiero que se vaya cambiando paso por paso porque y quiero hacerlo por todos los 461 00:30:56,029 --> 00:31:02,730 elementos entonces a lo mejor no es tan absurdo a nivel de programación decir lo hago con todos 462 00:31:02,730 --> 00:31:08,930 y luego la vacío no está simulando exactamente lo que está pasando pero a nivel de programación 463 00:31:08,930 --> 00:31:14,069 estaría bien tengo estos para usar lo hago todo y luego lo quito está si yo esto lo meto en un 464 00:31:14,069 --> 00:31:15,990 método, pues simulo que es 465 00:31:15,990 --> 00:31:18,009 procesa cola, pues ha procesado 466 00:31:18,009 --> 00:31:19,950 todos los elementos de la cola, perfecto 467 00:31:19,950 --> 00:31:21,650 pero como yo quiero que funcione 468 00:31:21,650 --> 00:31:23,970 de esta forma, tenemos que 469 00:31:23,970 --> 00:31:25,470 encontrar un método 470 00:31:25,470 --> 00:31:27,470 distinto a esto 471 00:31:27,470 --> 00:31:29,390 lo que yo haría es 472 00:31:29,390 --> 00:31:31,769 intentar utilizar 473 00:31:31,769 --> 00:31:33,410 no tanto 474 00:31:33,410 --> 00:31:35,470 algo que vaya 475 00:31:35,470 --> 00:31:38,069 creando 476 00:31:38,069 --> 00:31:39,190 un 477 00:31:39,190 --> 00:31:42,009 un mecanismo 478 00:31:42,009 --> 00:31:43,630 un, como se dice 479 00:31:43,630 --> 00:31:48,009 un objeto que vaya iterando sobre la cola 480 00:31:48,009 --> 00:31:51,029 sin utilizando los métodos propios de la cola 481 00:31:51,029 --> 00:31:52,829 o de la linked list en este caso 482 00:31:52,829 --> 00:31:55,470 vuelvo a linked list porque habíamos dicho hacerlo en linked list 483 00:31:55,470 --> 00:31:56,750 esta era una prueba 484 00:31:56,750 --> 00:32:04,109 fijaos pero que ahora he hecho que 485 00:32:04,109 --> 00:32:06,549 aquí sea una list 486 00:32:06,549 --> 00:32:08,730 y por lo tanto me he extraído 487 00:32:08,730 --> 00:32:13,490 de lo que es la implementación interna 488 00:32:13,490 --> 00:32:18,069 entonces lo que podríamos hacer 489 00:32:18,069 --> 00:32:19,250 aquí, es decir 490 00:32:19,250 --> 00:32:20,789 huile 491 00:32:20,789 --> 00:32:24,529 cola.sitze 492 00:32:24,529 --> 00:32:27,150 es mayor que 0 493 00:32:27,150 --> 00:32:29,750 ¿qué me estoy preguntando? 494 00:32:33,390 --> 00:32:34,849 ¿me entrae alguien en cola? 495 00:32:35,589 --> 00:32:36,630 pues lo que hago 496 00:32:36,630 --> 00:32:38,230 es que la recaudación 497 00:32:38,230 --> 00:32:39,990 en más precio 498 00:32:39,990 --> 00:32:41,509 esta cosa aquí 499 00:32:41,509 --> 00:32:43,890 donde p, ¿quién es? 500 00:32:44,930 --> 00:32:46,410 zona p es igual a 501 00:32:46,410 --> 00:32:46,589 ¿quién? 502 00:32:48,049 --> 00:32:50,250 cola.remove 503 00:32:50,250 --> 00:32:51,349 first 504 00:32:51,349 --> 00:33:03,410 entonces, técnicamente 505 00:33:03,410 --> 00:33:05,009 yo aquí no me he creado 506 00:33:05,009 --> 00:33:07,769 un conjunto, un objeto 507 00:33:07,769 --> 00:33:09,710 un algo que me permite 508 00:33:09,710 --> 00:33:11,569 recoleccionar, o sea, seguir 509 00:33:11,569 --> 00:33:13,470 la colección 510 00:33:13,470 --> 00:33:15,190 elemento por elemento 511 00:33:15,190 --> 00:33:17,549 y que cuando me modificas la colección 512 00:33:17,549 --> 00:33:19,630 ya no se corresponde a esta cosa que me había 513 00:33:19,630 --> 00:33:21,069 creado y por lo tanto 514 00:33:21,069 --> 00:33:23,589 se enfada, y aquí simplemente estoy 515 00:33:23,589 --> 00:33:25,829 preguntando, oye, ahora mismo 516 00:33:25,829 --> 00:33:27,589 en la cola, la cola que existe 517 00:33:27,589 --> 00:33:29,410 ahora, hay al menos una persona 518 00:33:29,410 --> 00:33:31,710 si la hay, píllame la primera 519 00:33:31,710 --> 00:33:33,309 y cálculame su precio 520 00:33:33,309 --> 00:33:35,910 si no la hay 521 00:33:35,910 --> 00:33:36,829 he acabado la cola 522 00:33:36,829 --> 00:33:39,309 y como 523 00:33:39,309 --> 00:33:42,029 remove lo que me hace es 524 00:33:42,029 --> 00:33:43,650 quitar el primero pero 525 00:33:43,650 --> 00:33:45,710 devolverme un puntero a este objeto 526 00:33:45,710 --> 00:33:47,789 que he quitado, pues la cola 527 00:33:47,789 --> 00:33:50,029 se va reduciendo, reduciendo, reduciendo hasta que se accede 528 00:33:50,029 --> 00:33:51,650 y este de aquí 529 00:33:51,650 --> 00:33:59,240 si quiero ver que está funcionando 530 00:33:59,240 --> 00:34:00,259 pasito a pasito 531 00:34:00,259 --> 00:34:03,240 esto lo puedo poner 532 00:34:03,240 --> 00:34:12,619 aquí y entonces veré como esta cola se va reduciendo, reduciendo, reduciendo, reduciendo 533 00:34:12,619 --> 00:34:17,099 hasta que queda una sola persona. Además, si os estáis fijando, siempre desaparece 534 00:34:17,099 --> 00:34:21,519 la primera. O sea que estoy haciendo bien la cola de la que antes procesó la primera 535 00:34:21,519 --> 00:34:29,019 persona, luego la segunda, luego la tercera. Entonces, este ejercicio para que tengáis 536 00:34:29,019 --> 00:34:42,619 en mente que si vosotros modifica jce una una colección mientras la estáis recorriendo eso 537 00:34:42,619 --> 00:34:50,079 puede dar un problema vale en situaciones en el que tengo que hacer todos los elementos pues o 538 00:34:50,079 --> 00:34:57,820 no lo remuevo hago todos los elementos y luego al final de nuevo toda la cola o toda la colección 539 00:34:57,820 --> 00:35:05,559 vale esa es una opción o si no puede buscarme una vía alternativa para hacer lo mismo si ten en 540 00:35:05,559 --> 00:35:11,860 cuenta que las herramientas sabéis varias pues esto es otra forma de recorrer una cosa removiendo 541 00:35:11,860 --> 00:35:19,300 pero esto funciona porque en cada en cada ciclo yo estoy acortando un poquito la cola si yo no 542 00:35:19,300 --> 00:35:25,159 hiciera esto pues esto no cambiaría nunca y entonces esto sería un ciclo infinito 543 00:35:28,420 --> 00:35:36,099 teniendo en cuenta también otra cosa que si en vez imaginaos que yo digo vale quiero recorrer 544 00:35:36,099 --> 00:35:45,460 esta esta cola pero quiero eliminar solo los mayores de edad no todos entonces una opción 545 00:35:45,460 --> 00:35:48,519 que podría hacer es crearme otra cola 546 00:35:48,519 --> 00:35:50,820 otra linked list 547 00:35:50,820 --> 00:35:54,519 o una relist que sean los mayores 548 00:35:54,519 --> 00:35:57,519 de edad, voy haciendo una iteración 549 00:35:57,519 --> 00:35:59,280 sin remover nada 550 00:35:59,280 --> 00:36:03,059 y cada vez que encuentro un mayor de edad 551 00:36:03,059 --> 00:36:04,739 lo guardo en esta nueva cola 552 00:36:04,739 --> 00:36:09,340 una vez que he guardado en esta nueva cola y tengo una cola 553 00:36:09,340 --> 00:36:11,599 con solo los mayores de edad 554 00:36:11,599 --> 00:36:14,920 puedo hacer, acabado todo, sobre la cola original 555 00:36:14,920 --> 00:36:28,179 removal de esta colección para que se entienda imaginaos que yo quiera ahora hago hago una copia 556 00:36:28,179 --> 00:36:39,099 para que se entienda lo que estoy haciendo imaginaos que en vez de esto yo diga vale 557 00:36:39,099 --> 00:36:48,820 quiero quedarme solo quiero procesar los mayores de edad dejando fuera los los pequeños dejando en 558 00:36:48,820 --> 00:36:54,820 cola los pequeños y nada más entonces lo que haría yo es 559 00:36:54,820 --> 00:37:04,719 linked list por ejemplo de persona borrar 560 00:37:04,719 --> 00:37:18,559 o mayores es igual año linked list de persona a 561 00:37:18,559 --> 00:37:32,360 A este punto diría, for persona p dos puntos cola, los pequeños se quedan en cola y no pagan por ahora. 562 00:37:32,360 --> 00:37:52,920 Diría, si p punto get edad es mayor o igual que 18, entonces que paguen. 563 00:37:53,099 --> 00:38:04,900 Recaudación más o igual a precio de p.edad. 564 00:38:04,900 --> 00:38:20,360 Y luego me marco que esta persona ahora la tengo que eliminar. 565 00:38:20,619 --> 00:38:22,360 Entonces la añado a mayores. 566 00:38:22,920 --> 00:38:25,179 Mayores.add p. 567 00:38:25,179 --> 00:38:31,300 entonces cuando he acabado 568 00:38:31,300 --> 00:38:32,980 todo esto, yo he hecho 569 00:38:32,980 --> 00:38:34,519 pagar a los mayores 570 00:38:34,519 --> 00:38:37,039 y todavía no los he eliminado 571 00:38:37,039 --> 00:38:39,579 es decir, que aquí yo si escribo 572 00:38:39,579 --> 00:38:41,960 lista 573 00:38:41,960 --> 00:38:44,780 más lista 574 00:38:44,780 --> 00:38:46,039 cola 575 00:38:46,039 --> 00:38:50,739 veré que siguen todos allí 576 00:38:50,739 --> 00:38:51,739 ¿vale? 577 00:38:54,019 --> 00:38:56,440 es que en lista siguen todas las personas 578 00:38:56,440 --> 00:38:57,539 también los mayores de edad 579 00:38:57,539 --> 00:39:00,420 pero una vez que he acabado esto, yo puedo decirle 580 00:39:00,420 --> 00:39:14,960 vale ok cola punto remove all y ahora le puedo poner una colección y le pongo mayores este de 581 00:39:14,960 --> 00:39:35,090 aquí lo que debería hacerme es pillar los mayores y removerlo y está filtrada es verdad es que aquí 582 00:39:35,090 --> 00:39:46,349 hay mayores de edad y en la lista filtrada sólo hay menores de edad si esta es una opción pregunta 583 00:39:46,349 --> 00:40:18,380 para vosotros porque esto funciona no es exactamente la pregunta pero imaginamos 584 00:40:18,380 --> 00:40:24,199 a ver si se pillan vale perfecto ahora yo lo que quiero hacer es después de haber hecho esto 585 00:40:24,199 --> 00:40:38,230 filtrar todas las personas que tienen siete años entonces yo lo que hago es persona 7 es igual a 586 00:40:38,230 --> 00:41:06,920 persona de 7 años, y ahora le digo cola.remove, 7, filtrada 2, ahora vamos a ver si me hace 587 00:41:06,920 --> 00:41:19,099 persona de 7 años, aquí en lista filtrada 5, 5, 8, 16, 17, 7 años, pero sigue también 588 00:41:19,099 --> 00:41:27,590 de la lista filtrada 2. Pero yo le había dicho de borrarlo el que tiene 589 00:41:27,590 --> 00:41:31,650 7 años. ¿Qué ha pasado aquí? 590 00:41:35,659 --> 00:41:37,800 Entonces, ¿por qué esto funciona? 591 00:41:47,369 --> 00:41:51,170 Porque aquí yo estoy añadiendo en esta 592 00:41:51,170 --> 00:41:55,329 cola, en esta get list 593 00:41:55,329 --> 00:41:59,590 una referencia a exactamente la misma 594 00:41:59,590 --> 00:42:03,530 persona que está en cola. Entonces, cuando yo voy 595 00:42:03,530 --> 00:42:11,809 hacer esto aquí dentro dentro mayores hay enlaces a instancias concretas que son las mismas que usen 596 00:42:11,809 --> 00:42:17,809 cola entonces cuando voy a ver si lo tengo que borrar o no diciendo este le va a borrar esta 597 00:42:17,809 --> 00:42:24,710 persona borra esta instancia él me lo está buscando en cola me la encuentra y hace un 598 00:42:24,710 --> 00:42:30,489 igual igual entre estos dos objetos y como son igual igual estos dos objetos porque son en la 599 00:42:30,489 --> 00:42:36,130 misma instancia pues entonces me lo puede borrar y solo este objeto si hay dos que tienen 18 años 600 00:42:36,130 --> 00:42:44,090 pues son dos personas distintas como debería ser sin embargo aquí yo estoy creando una instancia 601 00:42:44,090 --> 00:42:51,510 distinta cuando va a comparar esta persona de 7 años con una persona de 7 años que está en la en 602 00:42:51,510 --> 00:42:56,590 la cola no es la misma instancia y como yo he definido que sea igual igual no me lo va a 603 00:42:56,590 --> 00:43:14,510 alcance a borrar se entiende para que esto funcione que debería hacer para que 604 00:43:14,510 --> 00:43:28,590 esto me borre la persona de 7 años que debería hacer eso es una opción vale 605 00:43:28,590 --> 00:43:33,210 entendido que la opción que buscaba yo podría ir a personas decir vale entonces 606 00:43:33,210 --> 00:43:38,789 defino nuevamente el equals para que dos personas que tengan la misma edad sea la 607 00:43:38,789 --> 00:43:43,650 misma persona se corresponden como iguales a lo mejor no es lo que quiero 608 00:43:43,650 --> 00:43:49,550 yo porque en lista puede haber dos niños de siete años y si yo pongo así pues parece que sean la 609 00:43:49,550 --> 00:43:55,530 misma persona pero la verdad no lo son son objetos equivalentes son niños de siete años pero no son 610 00:43:55,530 --> 00:44:02,130 la misma persona y cuidado que una cola admite repeticiones entonces no cambiaría mucho vale 611 00:44:02,130 --> 00:44:07,750 cambiaría a nivel de que cuando luego creo una persona de siete años así la puede usar para 612 00:44:07,750 --> 00:44:11,710 a remover personas de 7 años. Ahora, la remove posiblemente me remueve 613 00:44:11,710 --> 00:44:15,710 uno solo. Y luego me devuelve 614 00:44:15,710 --> 00:44:19,789 el link a lo que ha removido probablemente. Pues eso sería hacer 615 00:44:19,789 --> 00:44:23,190 un while que remueva siempre esta persona de aquí 616 00:44:23,190 --> 00:44:27,510 hasta que me devuelva null, que entonces no ha removido nada. 617 00:44:29,849 --> 00:44:31,650 Estas cosas hay que trabajar 618 00:44:31,650 --> 00:44:35,869 un poquito con las listas 619 00:44:35,869 --> 00:44:38,070 cosas por estilo para que surjan 620 00:44:38,070 --> 00:44:39,510 varios y distintos 621 00:44:39,510 --> 00:44:41,949 situaciones y también 622 00:44:41,949 --> 00:44:43,730 os invito a que seáis vosotros que 623 00:44:43,730 --> 00:44:45,429 frente a una situación como esta penséis 624 00:44:45,429 --> 00:44:47,369 y si quiero hacer esto y si quiero hacer esto para 625 00:44:47,369 --> 00:44:49,730 explorar las posibilidades de hacer cosas 626 00:44:49,730 --> 00:44:52,090 distintas 627 00:44:52,090 --> 00:44:55,369 vuelvo aquí 628 00:44:55,369 --> 00:44:57,130 entonces esto es una 629 00:44:57,130 --> 00:44:59,269 posible solución, repito, al problema 630 00:44:59,269 --> 00:45:01,090 que surge aquí, la otra 631 00:45:01,090 --> 00:45:03,329 solución posible sería 632 00:45:03,329 --> 00:45:05,050 hacer esto pero sin 633 00:45:05,050 --> 00:45:06,809 remove y luego 634 00:45:06,809 --> 00:45:09,230 devolver, o sea, remover todo después 635 00:45:09,230 --> 00:45:10,309 ¿vale? o sea que 636 00:45:10,309 --> 00:45:12,929 hacer aquí un cola punto 637 00:45:12,929 --> 00:45:22,690 esto sí que 638 00:45:22,690 --> 00:45:23,349 funcionaría 639 00:45:23,349 --> 00:45:26,769 pero nos está simulando 640 00:45:26,769 --> 00:45:27,989 que se vayan de uno en uno 641 00:45:27,989 --> 00:45:29,670 ¿sí? 642 00:45:32,940 --> 00:45:35,500 y más o menos 643 00:45:35,500 --> 00:45:38,440 vamos a ver si tengo que hacer algo más 644 00:45:38,440 --> 00:45:44,659 dudas