java collections framework tutorial
Este tutorial explica el Framework de colecciones de Java (JCF) en detalle junto con la jerarquía de colecciones, varias interfaces y las ventajas de JCF:
Espero que estos elocuentes tutoriales sobre esto Serie Java para principiantes son realmente útiles para enriquecer su conocimiento de Java.
Nuestro tutorial anterior informó más sobre el operaciones de E / S básicas en Java . En este tutorial aprenderemos sobre Java Collections Framework (JCF) en detalle.
Java Collections Framework (JCF) contiene interfaces, clases abstractas y clases que pueden proporcionar la arquitectura para almacenar y manipular un grupo de objetos.
Lo que vas a aprender:
- Tutoriales de vídeo sobre el marco de colecciones de Java
- Conclusión
Tutoriales de vídeo sobre el marco de colecciones de Java
Conocimiento de Arraylist en Java:
Configure la interfaz y la interfaz de cola en Java con ejemplos en tiempo real:
HashMap, TreeMap y HashTable en Java:
Hasta ahora, hemos visto variables que almacenan diferentes tipos de datos. Estas son unidades singulares y no son muy útiles cuando tiene grandes cantidades de datos para almacenar y manejar. Como sabemos, los datos son el componente más importante del procesamiento informático.
Su aplicación debe poder extraer y recopilar datos, procesarlos para encontrar información útil y también pasarlos de un lado a otro para que se utilicen de manera eficiente para llegar a las soluciones.
En este mundo del software, almacenamos los datos que deben estructurarse de una manera particular para que los programas de software puedan almacenar, leer, procesar y finalmente generar los resultados. Esto se hace utilizando estructuras de datos.
Casi todos los lenguajes de programación admiten estructuras de datos. La estructura de datos se puede definir como una representación estructurada de datos. Los lenguajes de programación proporcionan funciones API (Interfaz de programación de aplicaciones) para manipular las estructuras de datos.
Necesidad de un marco de recogida
Antes de Java 1.2, el lenguaje de programación Java admitía estructuras de datos como matrices, vectores o tablas hash. Realizar operaciones en estas estructuras de datos no fue fácil ya que no había una interfaz común que funcionara en estas estructuras de datos.
Los programadores solían tener dificultades para escribir algoritmos que funcionaran para todas las estructuras de datos y era una gran molestia. Se necesitaba una interfaz común que funcionara de manera coherente en todas las estructuras de datos y también realizara las operaciones de manera eficiente.
Más tarde, Java creó un marco de colecciones que es un grupo de clases e interfaces que consta de varias operaciones que se pueden realizar en estructuras de datos.
En este tutorial de colecciones de Java, analizaremos el marco de colecciones de Java en general. Exploraremos cada uno de los componentes de la colección en nuestros próximos tutoriales.
Marco de colecciones de Java
Antes de definir un marco de colecciones de Java, vamos a conocer el significado de colección y marco.
Una colección se puede definir como un grupo de objetos. Una colección suele ser una sola unidad que consta de más de un objeto. Un marco es un software que tiene una interfaz o arquitectura funcional lista para usar y también contiene un conjunto de clases e interfaces que se utilizarán con la interfaz proporcionada.
Un marco de colecciones se define como una arquitectura unificada y lista para usar que consta de lo siguiente.
# 1) Algoritmos
Estos son métodos o conjuntos de declaraciones que pueden ayudar a los programadores a buscar, clasificar y procesar los datos recopilados. La colección viene empaquetada con interfaces, clases y algoritmos.
Las aplicaciones que se desarrollan heredando el marco de la colección tienen acceso a estos algoritmos y utilizan los métodos y procedimientos ya definidos.
# 2) Interfaces
Las interfaces en Java proporcionan la abstracción de la implementación, es decir, al utilizar interfaces, el usuario no conoce los detalles de la implementación, pero solo puede ver los métodos y los datos necesarios para escribir una aplicación. La interfaz de colección tiene muchas interfaces que puede implementar el programador para escribir sus propias clases.
# 3) Clases
Las clases de Collection Framework son estructuras de datos que se pueden implementar en un programa. Estas clases implementan la interfaz de 'Colección' y, por lo tanto, heredan todos los métodos y definiciones de la interfaz de colección.
Un marco de colección se utiliza para almacenar y manipular la colección que es el grupo de objetos.
El marco de recopilación de Java consta de algoritmos de alto rendimiento que llevan a cabo operaciones estándar como búsqueda, clasificación y procesamiento. Proporciona varias implementaciones estándar, incluidas LinkedList, TreeSet y HashSet para las que se proporcionan interfaces.
A continuación, comprendamos la jerarquía de colecciones de Java.
Jerarquía de colecciones de Java
Todas las clases e interfaces que se muestran en la jerarquía de la colección Java a continuación pertenecen al paquete 'java.util. *'.

Como se muestra en el diagrama anterior, la jerarquía de la colección de Java consta de varias clases e interfaces. Como puede ver, cada una de las clases hereda de una interfaz y todas las clases e interfaces, a su vez, heredan de una única interfaz de 'colección'.
Analicemos algunos métodos comunes en la interfaz de colección junto con una breve introducción sobre cada una de las clases e interfaces que se muestran en la jerarquía anterior.
Interfaz de colección
La interfaz de Colección es la interfaz raíz. Todas las clases del marco de la colección implementan la interfaz de la colección. Esto significa que cada colección tendrá los métodos declarados en la interfaz de Colección.
Algunos de los métodos de la interfaz Colección se muestran a continuación.
| No | Prototipo de método | Descripción |
|---|---|---|
| 7 | booleano predeterminado removeIf (filtro de predicado) | Elimine todos los elementos que satisfacen el predicado 'filtro' dado de la colección. |
| 1 | public int size () | Devuelve el número de elementos de una colección determinada. |
| 2 | vacío público claro () | Borra la colección eliminando todos los elementos de la colección. |
| 3 | public boolean add (E e) | Inserta un elemento e en la colección. |
| 4 | public booleanaddAll (Colección c) | Inserte todos los elementos de la colección proporcionada por c en la colección. |
| 5 | public boolean remove (elemento de objeto) | Elimina el elemento dado por 'elemento' de la colección. |
| 6 | public boolean removeAll (Collectionc) | Quite la colección c de la colección. |
| 8 | public booleanretainAll (Colección c) | Eliminar todos los elementos de la colección excepto los de la colección especificada c. |
| 9 | iterador de iterador público () | Devuelve el iterador de la colección. |
| 10 | Objeto público () toArray () | Convierta la colección en una matriz. |
| 11 | public T () toArray (T () a) | Convierta la colección en una matriz con un tipo de retorno especificado. |
| 12 | public boolean isEmpty () | Devolver si la colección está vacía o no. |
| 13 | public boolean contiene (elemento de objeto) | Compruebe si una colección contiene el elemento dado (operación de búsqueda). |
| 14 | public booleancontainsAll (Collectionc) | Compruebe si la colección contiene la colección c especificada en su interior. |
| 15 | spliterator spliterator predeterminado () | Devuelve spliterator sobre una colección especificada. |
| 16 | public booleanequals (elemento de objeto) | Se utiliza para combinar dos colecciones. |
| 17 | Flujo predeterminado paraleloStream () | Devuelve un flujo paralelo utilizando la colección como fuente. |
| 18 | Streamstream predeterminado () | Devuelve una secuencia secuencial utilizando la colección como fuente. |
| 19 | public int hashCode () | Devuelve el código hash numérico de la colección. |
Interfaz iterable
La interfaz Iterable también es la interfaz base del marco de la colección. La interfaz Collection, que es la interfaz principal de todas las demás clases, amplía la interfaz Iterable. Por lo tanto, todas las clases implementan una interfaz de colección, así como una interfaz iterable.
La interfaz Iterable tiene solo un método iterator () que devuelve el iterator () que puede usar para iterar sobre los elementos de tipo T.
|_+_|Interfaz de iterador
La interfaz Iterator proporciona la capacidad de iterar sobre los elementos en una dirección hacia adelante.
Los siguientes son los métodos que son compatibles con esta interfaz.
| No | Prototipo de método | Descripción |
|---|---|---|
| 1 | objeto público siguiente () | Primero devuelve el elemento y luego mueve el cursor para apuntar al siguiente elemento. |
| 2 | public boolean hasNext () | Comprueba si el iterador tiene más elementos. |
| 3 | public void remove () | Elimina el elemento devuelto por el iterador al final. |
Interfaz de lista
La interfaz de lista hereda la interfaz de colección. La interfaz de lista contiene las estructuras de datos que se utilizan para almacenar datos ordenados o colección de objetos. Estas estructuras de datos son de tipo lista. Estas estructuras de datos que implementan la interfaz de lista pueden tener o no valores duplicados.
La interfaz de lista contiene los métodos que se utilizan para acceder, insertar o eliminar elementos de los objetos de lista.
Varias clases que implementan la interfaz List son las siguientes:
cómo escribir casos de prueba en pruebas manuales
- Lista de arreglo
- Lista enlazada
- Vector
- Apilar
Discutiremos cada una de estas clases brevemente. Nuestros temas posteriores tendrán una discusión detallada sobre cada una de las clases de marco de colección.
# 1) ArrayList
ArrayList es la implementación más simple de la interfaz List. ArrayList conserva el orden de inserción y no está sincronizado.
La definición general de la estructura de datos ArrayList (Colección) es la siguiente:
|_+_|Una vez que la lista está definida, puede usar el método 'agregar' para agregar elementos. Tenga en cuenta que internamente ArrayList utilizó un mecanismo de matriz dinámica.
Vea los siguientes ejemplos que crean una colección de colores ArrayList.
|_+_|Producción:

El programa anterior muestra la demostración de la colección ArrayList. Agregamos valores de color a la colección y luego recorremos la colección para mostrar valores individuales en la colección usando un iterador.
# 2) LinkedList
La colección LinkedList utiliza internamente un mecanismo de lista doblemente enlazada para almacenar elementos. Puede contener elementos duplicados. Las operaciones de recopilación de LinkedList son más rápidas ya que no se requiere el cambio de elementos.
La definición general de crear una lista vinculada es la siguiente:
|_+_|El siguiente programa demuestra la colección de listas enlazadas de nombres de números .
|_+_|Producción:

Por lo tanto, creamos una lista vinculada y luego le agregamos elementos usando el método 'agregar'. Luego, usando un iterador, recorremos la lista vinculada y mostramos cada elemento.
# 3) Vector
Vector es similar a ArrayList y usa una matriz dinámica para almacenar los elementos como ArrayList. Pero vector admite muchos métodos independientes además de la colección, lo que lo convierte en una mejor opción para ser una colección preferida.
La definición general de recolección de vectores es:
|_+_|Tenga en cuenta que aunque vector y ArrayList utilizan el mismo mecanismo de matrices dinámicas, los elementos vectoriales están sincronizados.
El programa Java que se muestra a continuación demuestra el uso de vectores en el marco de la colección .
|_+_|Producción:

En este programa, hemos definido una colección de vectores que consta de sujetos. Agregamos varios temas y luego usamos un iterador para generar los elementos.
# 4) Pila
La estructura de datos de pila implementa la forma de insertar elementos de último en entrar, primero en salir (LIFO). La pila es una subclase del vector de clase (consulte el diagrama de jerarquía de colecciones anterior). Aparte de sus propios métodos, la colección de pila también admite los métodos de colección de vectores.
La definición general de colección Stack es:
|_+_|El siguiente programa implementa la colección Stack .
|_+_|Producción:

Como puede ver en la implementación anterior, los nuevos elementos se agregan a la pila usando el 'empujar' operación. La pila tiene un único punto de entrada llamado 'Parte superior de la pila' y los elementos se colocan en la pila en la parte superior. Por lo tanto, el último elemento agregado está en la parte superior de la pila.
Al igual que agregar, los elementos también se eliminan de un extremo, es decir, la parte superior de la pila. Para eliminar elementos, se utiliza una operación 'pop'. Por lo tanto, si llama a pop (), el elemento en la parte superior de la pila se eliminará.
En la salida anterior, insertamos el elemento 2, 4, 6,8,10 y luego llamamos a pop () para que se elimine 10.
Interfaz de cola
Las colecciones derivadas de la interfaz de cola siguen el orden de primero en entrar, primero en salir (FIFO). Los elementos se insertan en un extremo y se retiran por el otro extremo. Por lo tanto, el elemento ingresado primero pasa a ser el elemento que se elimina primero.
A continuación se muestran las colecciones que admiten la interfaz de consulta.
- PriorityQueue
- e interfaz
- ArrayDeque
Analicemos cada uno de estos brevemente.
#1) PriorityQueue
En la colección PriorityQueue, los elementos almacenados se procesan en función de sus prioridades. No puede almacenar valores nulos en la cola de prioridad.
La definición general de la cola de prioridad es la siguiente:
|_+_|El siguiente programa implementa la cola de prioridad.
|_+_|Producción:

Una vez más usamos colores como elementos de la cola de prioridad. En el programa anterior, hemos utilizado los métodos agregar y eliminar para agregar elementos a la cola y eliminar un elemento respectivamente. Usamos el método peek () que devuelve un elemento al que apunta en la cola de prioridad.
Finalmente, utilizando un iterador, se muestran los elementos de la cola de prioridad.
# 2) interfaz táctil
Deque o una 'cola de dos extremos' es una estructura de datos que le permite agregar y eliminar los elementos de ambos extremos. La interfaz deque en el marco de la colección de Java que extiende la interfaz Queue.
Proporciona la funcionalidad de deque y tiene una clase que hereda de él un 'ArrayDeque'.
# 3) ArrayDeque
ArrayDeque implementa la interfaz deque.
La definición general de ArrayDeque es la siguiente:
|_+_|ArrayDeque le permite utilizar la funcionalidad de Deque. A diferencia de otras colecciones como ArrayList o stack, ArrayDeque no tiene restricciones en su capacidad.
El siguiente ejemplo muestra la implementación de ArrayDeque.
|_+_|Producción:

En el programa anterior, definimos una colección ArrayDeque de tipo integer y le agregamos elementos enteros usando el método add. A continuación, se recorre la colección mediante la construcción for.
Configurar interfaz
La interfaz de conjunto es parte del paquete java.util y se extiende desde la interfaz de colección. Set es una estructura que no permite que la colección tenga valores duplicados y también más de un valor nulo.
Las siguientes clases implementan la interfaz establecida.
- HashSet
- LinkedHashSet
- TreeSet
# 1) HashSet
La colección HashSet que implementa la interfaz Set tiene valores distintos almacenados en ella. Esta colección usa la técnica hash para almacenar los elementos y usa la tabla hash para almacenar elementos.
T La definición general de la colección HashSet se muestra a continuación.
|_+_|Hemos dado la implementación de HashSet en el siguiente programa.
|_+_|Producción:

En el programa anterior, creamos una colección HashSet de sujetos y luego la recorremos usando un iterador para mostrar los elementos de la colección.
# 2) LinkedHashSet
LinkedHashSet implementa una interfaz establecida y extiende HashSet (consulte la jerarquía de la colección). LinkedHashSet es la representación de lista enlazada del conjunto de interfaces. LinkedHashSet contiene elementos únicos pero permite valores nulos.
La definición general de LinkedHashSet se da a continuación.
|_+_|La implementación de LinkedHashSet se muestra a continuación.
|_+_|Producción:

Una vez más utilizamos títulos de libros para crear Linkedhashset. Como puede ver en la salida, el orden de adición lo mantiene linkedHashSet.
Interfaz SortedSet
La interfaz SortedSet permite la ordenación completa de los elementos. Contiene métodos que proporcionan un orden natural de elementos. Los elementos de la colección que implementan la interfaz SortedSet están organizados en orden creciente.
La clase TreeSet es uno de los ejemplos que implementa la interfaz SortedSet.
Arbol
La definición general de Treeset es la siguiente:
|_+_|TreeSet implementa la interfaz SortedSet y contiene elementos únicos. El almacenamiento y la recuperación son bastante rápidos y luego los elementos se organizan en orden ascendente.
|_+_|Producción:

En el programa anterior, creamos y agregamos números impares a la colección usando métodos de adición. Luego, usando un iterador, generamos los elementos de la colección.
Ventajas del marco de colecciones de Java
- Programación reducida: El marco de Colecciones viene con todas las interfaces y clases que contienen los métodos que pueden permitir a los programadores escribir un programa eficiente. De esta manera, el programador no necesita concentrarse en demasiada programación.
- API y métodos consistentes: Todas las clases tienen métodos comunes que actúan sobre los datos. Estas API son consistentes en todas las clases y el programador no necesita preocuparse por tener demasiados métodos diferentes para cada clase.
- Aumente la velocidad y la precisión: Puede escribir programas altamente eficientes utilizando un marco de recopilación y también programas más rápidos y precisos, ya que el marco de recopilación proporciona la funcionalidad completa para implementar las estructuras y recopilaciones de datos.
- Facilita la reutilización del software: Las estructuras de datos y los algoritmos del marco de recopilación de Java son reutilizables.
- Interoperabilidad entre API no relacionadas: Las API de colección permiten la interoperabilidad incluso entre API no relacionadas.
- Menos esfuerzos para diseñar nuevas API: Los programadores pueden usar las API de colección estándar y diseñar nuevas API basadas en eso. No tienen que luchar para escribir API completamente nuevas.
Preguntas frecuentes
# 1) ¿Cuál es el uso de un marco de colección en Java?
Responder: El marco de recopilación ofrece algoritmos, interfaces y clases empaquetados que permiten a los programadores escribir programas altamente eficientes que pueden almacenar y procesar datos.
# 2) ¿Por qué Collection es un marco?
lo que abre un archivo .jar
Responder: Un marco es una colección reutilizable de clases, interfaces y algoritmos. El marco de recopilación también es una recopilación reutilizable de clases de estructura de datos y algoritmos que operan en estas clases.
# 3) ¿Qué es la API de colecciones de Java en Java?
Responder: La API de colecciones de Java proporciona interfaces y clases que se pueden ampliar e implementar para utilizar estructuras de datos que no son más que colecciones.
# 4) ¿Cuál es la diferencia entre colección y colecciones en Java?
Responder: La colección es una interfaz base en el marco de la colección, mientras que 'colecciones' es una clase. Ambos son parte del paquete java.util.
**** Más detalles y ejemplos del marco de colecciones de Java: ****

Comparación entre lista, conjunto y cola:
| Lista | Colocar | Cola |
|---|---|---|
| Se mantiene el orden de inserción | El orden de inserción no se mantiene en el conjunto hash | Se mantiene el orden de inserción. |
| Puede contener elementos duplicados | No puede contener elementos duplicados | Puede contener elementos duplicados. |
| La inserción y eliminación de una matriz se puede realizar para cualquier índice. | Elimina el elemento especificado. | Solo se puede extraer el último elemento insertado. Además, la inserción de elementos ocurre al final. |
Clase de lista de matriz
En Array, la asignación de memoria es fija. Pero en ArrayList, la memoria se puede asignar dinámicamente. Esta clase ArrayList mantiene el orden de inserción y puede insertar elementos duplicados.
Programa de demostración para Array List:
|_+_| 
Clase LinkedList
La estructura de datos de la lista vinculada contiene nodos y este nodo contendrá dos partes:
- Datos
- Referencia al siguiente elemento
El primer nodo no es un nodo separado. Contiene solo la referencia y se llama encabezado. El último nodo es nulo.

Programa de demostración:
|_+_| 
Cola
Una cola es la estructura de datos primero en entrar, primero en salir (FIFO). Si llama al método remove, siempre se eliminará de la cola el primer elemento insertado. Por lo tanto, Queue se usa en una aplicación en tiempo real donde los datos deben recuperarse en el orden insertado.
Programa de ejemplo:
|_+_| 
Colocar
Una colección de conjuntos no permitirá elementos duplicados. Puede utilizar una estructura de datos establecida cuando desee procesar la recopilación de datos sin duplicación y cuando no sea necesario mantener el orden de inserción.
Programa de demostración:
|_+_| 
Interfaz MAP
- Cuando desee procesar la recopilación de elementos con el par de clave y valor, puede utilizar la estructura de datos del mapa, ya que el mapa es un objeto que puede asignar claves a valores.
- Un mapa no puede contener claves duplicadas.
- Las implementaciones importantes de map son HashMap, Treemap, LinkedHashMap, HashTable.
Diferencia entre HashMap, Treemap, LinkedHashMap y HashTable:
| HashMap | TreeMap | LinkedHashmap | Tabla de picadillo |
|---|---|---|---|
| Se permiten claves y valores nulos | Solo se permiten valores nulos. | Se permiten claves y valores nulos. | No permitirá claves y valores nulos. |
| No sincronizado | No sincronizado | No sincronizado | sincronizado |
| No hay garantía para mantener el orden en la iteración. | La clasificación se realizará según el orden natural. | Se mantendrá el orden de inserción | No se mantiene el orden de inserción. |
Programa de demostración:
|_+_| 
Puntos clave a tener en cuenta:
- Las interfaces de lista, cola, conjunto extienden la interfaz de colección y esta interfaz de colección tiene métodos comunes como agregar, eliminar, etc.
- El orden de inserción se mantiene en la lista y un conjunto no puede contener elementos duplicados. La cola es la estructura de datos First in First out.
- El mapa contendrá pares de clave y valor. HashMap, Treemap, Hashtable, Linked HashMap son la implementación importante de la interfaz del mapa.
Conclusión
Este tutorial nos brindó una introducción al marco de colecciones de Java. Tocamos brevemente todas las clases e interfaces que forman parte del marco de la colección de Java.
En nuestros tutoriales posteriores de esta serie, aprenderemos en detalle sobre cada una de estas clases e interfaces.
¡Puedes explorar más sobre Reflections en JAVA en nuestro próximo tutorial!
PREV Tutorial | SIGUIENTE Tutorial
Lectura recomendada
- Tutorial de reflexión de Java con ejemplos
- Tutoriales detallados de Eclipse para principiantes
- Tutorial de Java SWING: contenedor, componentes y manejo de eventos
- Tutorial de JAVA para principiantes: más de 100 tutoriales prácticos en vídeo de Java
- Modificadores de acceso en Java: tutorial con ejemplos
- Tutorial de Java String con String Buffer y String Builder
- Introducción al lenguaje de programación Java - Tutorial en vídeo
- Tutorial de Cucumber Selenium: Integración de Cucumber Java Selenium WebDriver