Bienvenido de nuevo, Scott Stanley aquí. En estas lecciones, vamos a echar un vistazo en el marco de las colecciones, algunas funciones auxiliares estáticas que podemos usar para trabajar con estas colecciones, y luego vamos a echar un vistazo a lo natural y algoritmos de clasificación personalizados que podemos especificar. En esta lección, te mostraré el marco de las colecciones. Vemos que se compone de varios tipos interesantes. Lo primero que quiero llamar su atención es, vemos los cuadros naranjas aquí son los tipos de interfaz, y los cuadros azules son los tipos de clase. Como repaso, las interfaces especifican el qué, y las clases, las implementaciones de esas interfaces, determinan cómo, cómo funciona algo. para que podamos ver en la parte superior de la jerarquía del marco de recopilación, hay una interfaz de colección, que es el más genérico de todos. Y luego ves algunos más específicos. tipo de interfaces, listas, señales, conjuntos. Hay pilas, mapas, árboles, casi todo lo que podrías Hope for es parte de la jerarquía del marco de esta colección. Echemos un vistazo aquí a la prueba de colecciones. Bien, aquí vamos. El primer escenario de prueba que vemos es que estamos creando una nueva lista de arreglos. Lo estamos almacenando como el tipo genérico, refiriéndose a él genéricamente como el tipo de interfaz de lista. Y en este caso, estamos usando los genéricos. Y entonces esta va a ser una lista de tipos de números. Y vamos a agregar los primeros 50, así hasta 50 números primos. Así que dos, tres, cinco, siete, 11 hasta 47. Y luego probamos que tiene un tamaño de 15, que es el número de elementos que le agregamos. Así que esto requirió bastante escritura, como puede ver. Nos han dado un par de métodos abreviados de ayuda de hacer esto que nos hace la vida un poco más fácil. El primero de los cuales es en lugar de crear una nueva lista de matrices como lo hice aquí y empaquetarlo con esos números primos, vamos a tomar el enfoque abreviado, y solo usaremos las matrices como una lista y especifique los 15 números. Y más recientemente, han agregado algunos nuevos comportamientos a estos tipos de interfaz, sus métodos predeterminados en las interfaces. Así que tenemos una lista de, y del mismo modo, podemos especificar los primeros 50 números primos. Ahora una lista es una lista ordenada, lo que nos permite agregar un elemento en un índice particular. Así que si ven aquí tenemos uno, dos, cuatro, cinco y seis, y esos elementos se numeran cero, uno, dos, tres, cuatro, si quisiéramos insertar el número tres entre dos y cuatro, diríamos que quisiera agregar en el índice dos el número tres. Y lo que hace es deslizar todo hacia la derecha que estaba en ese lugar y más allá de ese lugar. Después de agregar el número tres en la segunda posición, cero, uno, dos, luego la lista será uno, dos, tres, cuatro, cinco, seis. Echamos un vistazo a una pequeña manera rápida de exprimir duplicados de una lista. Entonces una lista permite duplicados. De hecho, puedes ver que tenemos el número dos. duplicado varias veces, así como seis y siete. Y el tamaño de esta lista es 10. Si queremos exprimir los duplicados, podemos crear un nuevo conjunto hash. Los conjuntos no permiten duplicados. Entonces, lo que termina haciendo es reducir la lista a uno, dos, seis, siete, ocho. Aquí hay un ejemplo de un mapa. Tenemos un mapa de número a cadena, y el número aquí, tal vez un número de empleado. Así que el empleado número uno es Scott. El número dos es Jennifer. El número tres es Tyler. Y luego podemos verificar que mirando el mapa, esta colección, para la clave número tres, más bien, es Tyler. Ante el nuevo comportamiento puesto si está ausente, si quisiéramos poner un nuevo par clave-valor en un mapa, pero queríamos asegurarnos de no chocar con algo que ya puede haber estado en ese lugar, tuvimos que hacer esto. Si busco la clave número tres en este mapa, y no hay tal cosa, entonces lo haré pon el número tres emparejando con la cuerda Pedro. Y esto fue un poco klugey. La nueva forma de hacerlo ahora es simplemente decir poner si está ausente. Poner si está ausente. Y lo último que veremos aquí es la noción de un mapa hash débil. Un mapa hash débil es muy útil para guardar cachés, por ejemplo. La forma en que funciona un tipo de colección de mapa hash débil es la siguiente. Tan pronto como no haya más referencias a elementos dentro del mapa, luego los pares clave-valor en el mapa hash débil desaparecerá. Se purgarán automáticamente en un intervalo de recolección de basura. Entonces, si creamos a Chris y Eddie aquí, y ponerlos en esta colección, este mapa, que resulta ser una implementación de mapa hash débil, ponemos esos dos objetos en el mapa, y luego podemos afirmar que el tamaño del mapa es dos. Tan pronto como Chris se establece en nulo, Chris fue una de las parejas clave de valor que pusimos en este mapa hash débil, tan pronto como Chris se establece en nulo entonces ya no hay referencias a ese par clave-valor, y tan pronto como a medida que se produce una recolección de basura, Lo forcé aquí solo para poder probar el problema, tan pronto como ejecutemos una recolección de basura, y luego vamos y le preguntamos al mapa hash cuál es su tamaño, su tamaño ya no es dos, su tamaño ahora es uno, porque descartar la referencia a un par de valores clave reduce automáticamente el tamaño de ese mapa hash débil. En la próxima lección, vamos a echar un vistazo en algunas funciones estáticas, métodos auxiliares, que podemos aprovechar para aprovechar más de esta jerarquía de colecciones. Gracias por mirar y estad atentos.