1 00:00:00,180 --> 00:00:05,070 Un detalle importante que se me olvidó mencionar la clase anterior es el Reich Rangos. 2 00:00:05,220 --> 00:00:09,000 Bueno, hay dos tipos el Reich y también está el Clouds. 3 00:00:09,090 --> 00:00:10,230 La diferencia es que el clouds. 4 00:00:10,350 --> 00:00:15,240 Y si de hecho la diferencia es sutil, incluye el segundo argumento. 5 00:00:15,360 --> 00:00:22,020 Es decir, el último elemento del rango se incluye, a diferencia del Reich, que no se incluye, es 6 00:00:22,020 --> 00:00:25,090 excluyente y es incluyente, inclusivo. 7 00:00:25,350 --> 00:00:26,070 La única diferencia. 8 00:00:26,160 --> 00:00:29,910 Por ejemplo, si utilizamos Reich Clouds, el 20 se incluye. 9 00:00:29,970 --> 00:00:37,290 Si utilizamos el Reich, el 20 nos incluye, llega hasta 19 y tenemos como tenemos el Integer Stream. 10 00:00:37,380 --> 00:00:43,530 También está el long stream y el double stream para traja con decimales o con enteros másgrandes. 11 00:00:43,620 --> 00:00:44,610 Bien, eso quería mencionar. 12 00:00:44,670 --> 00:00:45,510 Ahora continuamos. 13 00:00:45,990 --> 00:00:51,660 Quería ver el ejemplo del distinct, pero del tipo objeto usuario. 14 00:00:51,720 --> 00:00:54,710 Entonces vamos a abrir o vamos a copiar el filter single? 15 00:00:54,960 --> 00:00:57,570 Lo copiamos y lo pegamos. 16 00:00:57,810 --> 00:00:59,310 Entonces la vamos a colocar acá. 17 00:00:59,430 --> 00:01:06,030 Distinto usuario, claro, porque ya es distinto que un string. 18 00:01:06,210 --> 00:01:10,020 Acá vimos el ejemplo con el string, una cadena, pero acá del tipo usuario. 19 00:01:10,140 --> 00:01:10,950 Bueno, cómo sería? 20 00:01:11,040 --> 00:01:12,480 Recuerden que los objetos son únicos. 21 00:01:12,600 --> 00:01:15,720 Entonces, claro, tendríamos que implementar el método equals. 22 00:01:15,840 --> 00:01:19,320 Ahora también depende donde coloquemos el distin, porque esto lo colocamos acá. 23 00:01:19,410 --> 00:01:23,900 Se aplicar al string existe, lo colocamos ante el map, pero esto lo colocamos después del MAP. 24 00:01:23,910 --> 00:01:26,310 Se aplica al objeto y eso es lo que quería ver. 25 00:01:26,320 --> 00:01:28,440 Ahora bien, esto acá lo vamos a quitar 26 00:01:31,140 --> 00:01:35,490 nombres punto for hecho perfecto y copiamos esto acá. 27 00:01:37,990 --> 00:01:40,180 Lo pegamos y el PIC lo podemos quitar. 28 00:01:43,220 --> 00:01:47,720 Ya que lo vamos a ver con el forillo para que no esté duplicado, para no mostrar los dos veces bien, 29 00:01:47,810 --> 00:01:50,060 vamos a copiar a Pato. 30 00:01:51,040 --> 00:01:55,630 Lo copiábamos y lo replicamos te fijan hay tres patos. 31 00:01:56,230 --> 00:01:57,860 Vamos a colocar acá el DÍSTICA. 32 00:01:58,720 --> 00:02:00,370 Recuerden que es un operador intermedio. 33 00:02:00,430 --> 00:02:01,000 No hay final. 34 00:02:01,120 --> 00:02:02,980 Entonces lo podemos llamar donde queramos. 35 00:02:03,340 --> 00:02:05,440 Entonces, por supuesto que acá si ejecutamos. 36 00:02:06,370 --> 00:02:07,160 No se repite. 37 00:02:07,660 --> 00:02:09,010 Ah, bueno, saquemos el filters. 38 00:02:09,370 --> 00:02:12,250 También se me olvidó sacrifícate Oishi. 39 00:02:15,920 --> 00:02:21,690 Pato, Paco, se fijan, no duplicà pato porque lo aplicamos acá en el estric. 40 00:02:22,160 --> 00:02:24,200 Pero qué pasa si lo movemos acá abajo? 41 00:02:25,970 --> 00:02:27,650 Lo cortamos y lo pegamos acá? 42 00:02:29,390 --> 00:02:29,990 Qué va a pasar? 43 00:02:33,080 --> 00:02:35,780 Casi duplicà pato, pato, se fijan. 44 00:02:37,040 --> 00:02:38,960 Porque son instancias distintas. 45 00:02:39,050 --> 00:02:44,190 Recuerda que el usuario crea un objeto independiente si los atributos son iguales. 46 00:02:44,300 --> 00:02:45,990 Los objetos son diferentes. 47 00:02:46,010 --> 00:02:47,720 Cada instancia es distinta. 48 00:02:47,840 --> 00:02:53,300 Entonces, para aplicar el distinct de forma efectiva, tendríamos que implementar el método equals 49 00:02:53,390 --> 00:02:55,940 y comparar, por ejemplo, por el nombre y apellido. 50 00:02:56,000 --> 00:03:01,550 Entonces, si el nombre apellido es exactamente igual, se va a suprimir acá en el distinto vamos a 51 00:03:01,550 --> 00:03:02,210 la clase usuario. 52 00:03:04,600 --> 00:03:10,710 Implementemos el equals por acá, después del toString o antes del Stink nos vamos a Generate. 53 00:03:11,760 --> 00:03:19,500 Y Quarts y Ascot en realidad no interesa el equals y que sea idéntico por estos tres atributos, no 54 00:03:19,560 --> 00:03:24,830 en realidad por el nombre Pío XI, porque Leydi va a ser distinto, entonces al menos el nombre, el 55 00:03:24,840 --> 00:03:26,010 apellido son iguales. 56 00:03:26,160 --> 00:03:31,560 Voy a quitar el Heidy y el objeto se considera como igual, porque si colocamos el Heidy obviamente 57 00:03:31,680 --> 00:03:32,580 debe ser distinto. 58 00:03:32,700 --> 00:03:34,440 Entonces se duplicaría también. 59 00:03:35,310 --> 00:03:39,540 Siguiente El Ascot en este caso no es necesario, pero da lo mismo. 60 00:03:39,690 --> 00:03:42,440 Le ponemos siguiente finalizar Decca. 61 00:03:42,450 --> 00:03:45,930 Tenemos acá lo importante el equals con nombre y apellido. 62 00:03:46,260 --> 00:03:51,690 Recuerden les podemos generar con el IDE tal como lo hicimos ahora con el INTELIGE o bien de forma manual. 63 00:03:51,780 --> 00:03:56,910 También hemos visto cómo crear esto de forma onor, incluso con este mismo código que genera Elida. 64 00:03:57,540 --> 00:03:58,560 Bien, cerramos. 65 00:03:59,670 --> 00:04:00,840 Ahora volvemos a levantar. 66 00:04:04,840 --> 00:04:05,740 Ya no está duplicado. 67 00:04:06,500 --> 00:04:11,380 Pato Guzmán uno solo, entonces por eso también importante el metódicas. 68 00:04:11,470 --> 00:04:18,760 También quería hacer un ejercicio con él sum y con el average, con el promedio, con el summary, con 69 00:04:18,760 --> 00:04:20,380 el resumen estadístico. 70 00:04:20,560 --> 00:04:27,850 Pero acá tenemos el problema, que tenemos un tipo de stream y no es un tipo entero, pero no importa. 71 00:04:27,940 --> 00:04:30,760 Igual lo podemos utilizar, lo podemos implementar. 72 00:04:30,850 --> 00:04:33,000 Veamos cómo voy a copiar este mismo ejemplo. 73 00:04:34,510 --> 00:04:36,100 Vamos a copiar, lo pegamos. 74 00:04:37,450 --> 00:04:38,530 Y además le voy a poner zum. 75 00:04:40,180 --> 00:04:40,750 Perfecto. 76 00:04:41,390 --> 00:04:41,510 Bien. 77 00:04:41,650 --> 00:04:42,490 Qué vamos a sumar? 78 00:04:42,580 --> 00:04:44,320 Pues ser el Heidy que es entero. 79 00:04:44,380 --> 00:04:48,970 Claro, porque tenemos que realizar una operación aritmética sobre algún atributo que sea el tipo entero. 80 00:04:49,030 --> 00:04:54,850 Pero también podría ser sobre el largo del nombre o del apellido o de ambos calcular el link. 81 00:04:55,060 --> 00:05:01,090 Por ejemplo, el link del nombre Peyo, saber cuál nombre es más largo, incluyendo el apellido. 82 00:05:01,150 --> 00:05:02,230 Cuál es más corto? 83 00:05:02,260 --> 00:05:04,810 Cuál es el promedio en cantidad de caracteres? 84 00:05:04,930 --> 00:05:06,100 Tener esa información. 85 00:05:06,220 --> 00:05:07,090 Cómo lo podemos hacer? 86 00:05:07,420 --> 00:05:11,590 Bueno, podríamos utilizar un MAP, pero no es cualquier map. 87 00:05:12,070 --> 00:05:14,350 Un map, tu entero, tu integer. 88 00:05:14,620 --> 00:05:21,640 También tenemos tu doble o tu long, que al final convierte a un double stream a int stream y a un long 89 00:05:21,670 --> 00:05:24,430 string y con el in stream perfecto. 90 00:05:24,550 --> 00:05:27,010 Ahí podemos utilizar el método sumar. 91 00:05:27,040 --> 00:05:31,960 Por ejemplo, los métodos propio de los flujos de enteros o de los int string. 92 00:05:32,230 --> 00:05:33,280 Entonces map. 93 00:05:33,280 --> 00:05:33,850 Tú int. 94 00:05:35,090 --> 00:05:40,130 Acá se emite el usuario, pero lo tengo que convertir a un entero. 95 00:05:40,250 --> 00:05:44,950 Me interesa el link, entonces por cada uno vamos a obtener el link del nombre Lapido. 96 00:05:45,090 --> 00:05:50,090 Entonces u punto tu stink o podría ser el nombre o el apellido. 97 00:05:50,270 --> 00:05:52,280 Si queremos los dos sería el string. 98 00:05:52,790 --> 00:05:56,090 Recuerden que el string lo tenemos implementado por acá. 99 00:05:57,560 --> 00:05:59,200 Que concatena en nombre la villa. 100 00:05:59,450 --> 00:06:00,950 ÂQuà nombre apellido? 101 00:06:03,190 --> 00:06:07,780 Entonces tu string punto link, el link retorna entero. 102 00:06:08,590 --> 00:06:14,960 Entonces treme convirtiendo nuestro flujo de usuario a un flujo de entero, pero que tenemos que cambiar. 103 00:06:15,250 --> 00:06:19,420 Entonces, en vez de un stream de usuarios sería bueno, esto lo quitamos. 104 00:06:21,650 --> 00:06:22,040 Int. 105 00:06:24,900 --> 00:06:25,860 Largo. 106 00:06:26,850 --> 00:06:27,540 Nombres. 107 00:06:29,050 --> 00:06:29,830 Importamos. 108 00:06:35,850 --> 00:06:37,590 Perfecto, ahora sería el largo nombres. 109 00:06:37,720 --> 00:06:40,590 Bueno, y acá se imprime la cantidad caracteres de cada uno. 110 00:06:43,030 --> 00:06:52,090 Veamos, por ejemplo, pa Tucumán tiene 11 caracteres, Paco 13, Pepa 14 y así 9 11. 111 00:06:52,720 --> 00:06:54,130 Cómo aplicamos el distinct? 112 00:06:54,410 --> 00:06:57,130 Esto se omite el pato goma que está repetido. 113 00:06:57,890 --> 00:07:01,540 Entonces podemos trabajar con estos enteros y podemos hacer lo mismo que hicimos delante. 114 00:07:01,750 --> 00:07:03,370 Saber cuál es el máximo, el mínimo. 115 00:07:03,400 --> 00:07:03,820 En fin. 116 00:07:05,200 --> 00:07:06,850 Soult, por ejemplo. 117 00:07:06,850 --> 00:07:07,330 La suma. 118 00:07:07,810 --> 00:07:08,470 Largo. 119 00:07:09,070 --> 00:07:09,550 Punto. 120 00:07:09,550 --> 00:07:09,880 Sum. 121 00:07:15,520 --> 00:07:21,040 Ya ha cometido un error y está bien, porque solamente podemos tener un solo o, pero al final llega, 122 00:07:21,040 --> 00:07:21,820 estamos con el foreach. 123 00:07:22,060 --> 00:07:24,310 Entonces en realidad tenemos que usar uno o el otro. 124 00:07:24,790 --> 00:07:26,800 Comentamos el foreach Jassi. 125 00:07:28,730 --> 00:07:29,370 58. 126 00:07:29,530 --> 00:07:32,270 Entonces es importante siempre un operador final. 127 00:07:32,420 --> 00:07:34,100 Eso lo había mencionado bien. 128 00:07:34,220 --> 00:07:35,930 Ahora, si quiero inspeccionar, podríamos copiar. 129 00:07:35,930 --> 00:07:40,070 Esto lo pegamos acá y utilizamos el PIC. 130 00:07:40,560 --> 00:07:41,450 Está la gracia del PIC. 131 00:07:42,110 --> 00:07:44,600 Entonces causamos pic. 132 00:07:46,010 --> 00:07:51,650 A ese entonces, de esta forma tenemos el total y además saber el largo de cada elemento. 133 00:07:52,130 --> 00:07:52,700 Perfecto. 134 00:07:55,160 --> 00:07:55,760 Total. 135 00:07:59,240 --> 00:07:59,790 Shout. 136 00:08:00,560 --> 00:08:01,340 Pero recuerden. 137 00:08:01,520 --> 00:08:10,040 Qué pasa si colocamos largo nombres punto a barat o máximo el count? 138 00:08:10,160 --> 00:08:10,700 Se fijan? 139 00:08:11,030 --> 00:08:13,190 Veamos qué pasa si colocamos el máximo. 140 00:08:16,660 --> 00:08:21,760 También es un operador terminal, por lo tanto, también lanza el error de que fue cerrado el flujo 141 00:08:21,850 --> 00:08:22,540 con el zoom. 142 00:08:22,660 --> 00:08:27,610 No podemos utilizar el máximo, ni el abara, ni el mínimo uno de ellos. 143 00:08:27,670 --> 00:08:29,620 Entonces, cuál sería la solución si quiero mostrar todos? 144 00:08:29,800 --> 00:08:36,400 Bueno, lo mismo que hicimos la clase anterior, vamos a colocar samādhi o int samādhi estadísticas 145 00:08:36,890 --> 00:08:37,420 de acá. 146 00:08:39,440 --> 00:08:42,020 Stats de estadísticas, igual. 147 00:08:42,440 --> 00:08:43,150 Largo. 148 00:08:43,340 --> 00:08:44,090 Nombres. 149 00:08:44,270 --> 00:08:45,200 Punto. 150 00:08:45,320 --> 00:08:45,900 Sanare. 151 00:08:46,010 --> 00:08:46,760 Estadísticas. 152 00:08:46,970 --> 00:08:47,540 Perfecto. 153 00:08:47,870 --> 00:08:50,780 Entonces tenemos un operador terminal que envuelve todo. 154 00:08:50,930 --> 00:08:53,380 Entonces, ahora simplemente utilizamos estadísticas. 155 00:08:54,110 --> 00:08:54,800 Get zum. 156 00:08:57,540 --> 00:09:05,160 Acá también está EditText Jet Max aponer máximo. 157 00:09:10,110 --> 00:09:10,610 Zombi. 158 00:09:11,550 --> 00:09:13,920 Punto to get min. 159 00:09:21,480 --> 00:09:25,080 Shout guet avaras. 160 00:09:25,380 --> 00:09:26,070 El promedio. 161 00:09:30,880 --> 00:09:32,130 En fin, y lo logramos. 162 00:09:34,150 --> 00:09:36,280 Jassi se fijan cada uno. 163 00:09:37,300 --> 00:09:45,250 Luego tenemos el total, la suma completa de todo lo caracteres, el máximo 14 que corresponde a Pepa 164 00:09:45,250 --> 00:09:53,200 Gutiérrez, luego tenemos el mínimo 9 y luego tenemos el promedio en caracteres, una información importante. 165 00:09:53,290 --> 00:09:59,950 Entonces podemos realizar una traza estadística de nuestros elementos, ya sea por algún atributo de 166 00:09:59,950 --> 00:10:06,490 la clase del objeto o bien por algún tipo parámetro del tipo entero o numérico de alguna información, 167 00:10:06,490 --> 00:10:09,340 otro objeto como el largo del nombre Lupillo. 168 00:10:09,460 --> 00:10:15,790 Y así como aplicamos la suma o la estadísticas al largo del string del string nombre pillo, también 169 00:10:15,790 --> 00:10:19,420 percibo de Leidy simplemente cambiando acá. 170 00:10:21,950 --> 00:10:22,820 Geet Heidy. 171 00:10:25,830 --> 00:10:26,950 Cambia todo acá. 172 00:10:27,040 --> 00:10:31,980 Obviamente a sumar los Heidy va a sacar el promedio de los Saidi, se fija un, dos, tres, cuatro, 173 00:10:31,990 --> 00:10:32,410 cinco. 174 00:10:32,440 --> 00:10:33,370 Total 15. 175 00:10:33,430 --> 00:10:34,500 El máximo cinco. 176 00:10:34,570 --> 00:10:36,010 El mínimo di1. 177 00:10:36,130 --> 00:10:37,390 El promedio 3. 178 00:10:37,780 --> 00:10:40,660 Pero bien, vamos a dejar con el link nada más. 179 00:10:40,750 --> 00:10:42,530 Nos vemos en la siguiente clase.