Java >> Tutorial de Java >  >> Java

Tutorial del marco de colecciones de Java

El marco de Java Collections es una API importante en el lenguaje de programación Java. En cualquier aplicación Java, si tiene que almacenar objetos, seguramente utilizará una de las estructuras de datos definidas en las colecciones de Java. Este tutorial de colecciones de Java ofrece una descripción general del marco de las colecciones de Java; interfaces y clases que constituyen el marco de las colecciones y la jerarquía de las colecciones de Java.

¿Qué es el marco de colecciones de Java?

Una colección se puede definir como un contenedor que puede almacenar múltiples elementos en un solo contenedor. El marco de colecciones en Java proporciona una arquitectura unificada para definir dichas clases de contenedores que pueden almacenar, recuperar y manipular grupos de elementos.

El marco de Java Collections contiene lo siguiente:

  1. Interfaces - Las interfaces en las colecciones de Java son los tipos de datos abstractos que representan colecciones. Estas interfaces proporcionan la estructura generalizada para la colección que luego se implementan para proporcionar implementaciones especializadas. Por ejemplo java.util.Collection es la interfaz raíz en la jerarquía de colecciones que define métodos para las colecciones y las implementaciones de esta interfaz, como ArrayList o HashSet, proporcionan estructuras de datos especializadas.
  2. Implementaciones- Las clases de implementación son las implementaciones concretas de las interfaces de colección. Estas son las estructuras de datos reutilizables que puede usar según sus necesidades. Por ejemplo, si desea almacenar elementos a los que se puede acceder mediante un índice, puede usar ArrayList; si desea asegurarse de que solo se almacenen elementos únicos, puede usar HashSet.
  3. Algoritmos- Estos son los métodos que realizan cálculos útiles en las clases de colección. Estos métodos están diseñados de tal manera que el mismo método se puede usar en diferentes clases de colección. Por lo tanto, estos algoritmos brindan algunas funcionalidades comunes que son aplicables a todas las colecciones, como buscar, ordenar y comparar elementos. Los algoritmos se definen como métodos estáticos en java.util.Collections clase.

Interfaces en Colecciones Java

En el marco de Java Collections hay varias interfaces centrales que son la base del marco de Java Collections. Estas interfaces están diseñadas con un estilo evolutivo, desde interfaces más generalizadas hasta interfaces especializadas. La siguiente lista describe las interfaces principales de la colección:

  1. Interfaz de colección - Esta interfaz es la raíz de la jerarquía de la colección que es implementado por todas las colecciones. Aunque ninguna clase la implementa directamente, la interfaz de colección se amplía con subinterfaces más específicas como List y Establecer que a su vez son implementados por clases.
  2. Interfaz de lista - Amplía la interfaz de la colección y proporciona un comportamiento para una colección ordenada (en el que los elementos se almacenan en secuencia) que pueden contener elementos duplicados. Además de heredar los métodos de la interfaz Collection, la interfaz List incluye operaciones para que se pueda acceder a los elementos usando el índice (métodos get, set, add, remove), los elementos se pueden buscar devolviendo su índice (métodos indexOf, lastIndexOf).
  3. Establecer interfaz - Amplía la interfaz de la colección y proporciona un comportamiento para una colección que no puede contener elementos duplicados.
  4. Interfaz de cola - Amplía la interfaz de la colección y proporciona un comportamiento para una colección donde el encabezado de la cola es el elemento eliminado por una llamada para eliminar o sondear.
  5. Interfaz de conjunto ordenado - Amplía la interfaz Set y proporciona comportamiento para un conjunto ordenado. Los elementos del conjunto se ordenan utilizando su ordenación natural o mediante un comparador que normalmente se proporciona en el momento de creación del conjunto ordenado.
  6. Interfaz NavigableSet - Extiende SortedSet y agrega métodos de navegación que informan las coincidencias más cercanas para los objetivos de búsqueda dados. Los métodos inferior, inferior, máximo y superior devuelven elementos respectivamente menor que, menor o igual, mayor o igual y mayor que un elemento dado, y devuelven un valor nulo si no existe tal elemento.
  7. Interfaz Deque - Extiende Queue y proporciona soporte para la inserción y extracción de elementos en ambos extremos.

Interfaces de mapas

  1. Interfaz de mapa - La interfaz de mapa proporciona comportamiento para una colección que almacena un par (clave, valor). Tenga en cuenta que, aunque Map es parte del marco de Java Collections, no amplía la interfaz de Collection . No puede iterar directamente un mapa también, para iterar un mapa tendrá que obtener una vista de colección de un mapa y luego iterarlo.
  2. Interfaz de mapa ordenado - Amplía la interfaz del mapa y proporciona un comportamiento para un mapa ordenado según sus claves. El mapa se ordena de acuerdo con el orden natural de sus claves, o mediante un comparador que normalmente se proporciona en el momento de la creación del mapa ordenado.
  3. Interfaz de mapa navegable - Extiende SortedMap y agrega métodos de navegación que informan las coincidencias más cercanas para los objetivos de búsqueda dados. Los métodos lowerEntry, floorEntry, ceilingEntry yhigherEntry devuelven objetos Map.Entry asociados con claves respectivamente menor que, menor que o igual, mayor que o igual y mayor que una clave dada, devolviendo nulo si no existe tal clave.

Interfaces para iterar una colección

  1. Interfaz iterable - La implementación de la interfaz java.lang.Iterable permite que un objeto sea el objetivo de la instrucción "for-each loop". La interfaz de colección amplía esta interfaz para que las clases de colección se puedan iterar mediante el bucle for-each.
  2. Interfaz de iterador - java.util.Iterator le permite recorrer una colección. También permite que la persona que llama elimine elementos de la colección subyacente durante la iteración.
  3. Interfaz ListIterator - Extiende Iterator y proporciona un comportamiento especializado para recorrer la lista en cualquier dirección, modificar la lista durante la iteración y obtener la posición actual del iterador en la lista.

Clases de colecciones de Java

Ya hemos pasado por la interfaz central del marco de colecciones de Java, ahora veamos las clases que implementan estas interfaces. Una vez más, las clases evolucionan de lo general a lo más específico, por lo que hay clases abstractas que implementan las interfaces para proporcionar una implementación general, luego hay clases más específicas para colecciones específicas.

  1. Colección Abstracta - Esta clase abstracta proporciona una implementación básica de la interfaz de la colección, para minimizar el esfuerzo requerido para implementar esta interfaz.
  2. Lista de Resumen - Esta clase abstracta extiende AbstractCollection e implementa la interfaz List para minimizar el esfuerzo requerido para implementar esta interfaz.
  3. Conjunto abstracto - Esta clase abstracta extiende AbstractCollection e implementa la interfaz Set para minimizar el esfuerzo requerido para implementar esta interfaz.
  4. Cola abstracta - Esta clase abstracta amplía AbstractCollection e implementa la interfaz Queue para proporcionar implementaciones básicas de algunas operaciones de Queue.
  5. Lista secuencial abstracta - Extiende AbstractList para proporcionar una implementación para la colección que usa acceso secuencial (como una lista vinculada) en lugar de acceso aleatorio (como una lista de arreglos) de sus elementos.
  6. Lista de arreglos - Java ArrayList amplía AbstractList y proporciona una implementación de matriz variable de la interfaz List. Consulte ArrayList en Java para saber más sobre Arraylist en Java.
  7. Lista enlazada - Extiende AbstractSequentialList y proporciona una implementación de lista doblemente enlazada de las interfaces List y Deque.
  8. Conjunto de Hash - Extiende AbstractSet y proporciona implementación para una colección desordenada que no permite duplicados. Consulte HashSet en Java para saber más sobre HashSet en Java.
  9. Conjunto de hash vinculado - Extiende HashSet y proporciona una implementación especializada para un Conjunto que mantiene el orden de iteración, que es el orden en que se insertaron los elementos en el conjunto. Consulte LinkedHashSet en Java para saber más sobre LinkedHashSet en Java.
  10. Conjunto de árboles - Extiende AbstractSet e implementa la interfaz NavigableSet para proporcionar un conjunto ordenado. Consulte TreeSet en Java para saber más sobre TreeSet en Java.
  11. EnumSet - Amplía AbstractSet y proporciona una implementación de Set especializada para su uso con tipos de enumeración.
  12. ArrayDeque - Extiende AbstractCollection e implementa la interfaz Deque para proporcionar una implementación de matriz variable de la interfaz Deque. En ArrayDeque puede agregar y eliminar elementos en ambos puntos finales.

Mapa de clases relacionadas

  1. Mapa abstracto - Esta clase abstracta proporciona una implementación esquelética de la interfaz Map, para minimizar el esfuerzo requerido para implementar esta interfaz.
  2. Mapa hash - Amplía AbstractMap y proporciona una implementación basada en tablas hash de la interfaz Map. Consulte HashMap en Java para saber más sobre HashMap en Java.
  3. Mapa de hash vinculado - Extiende HashMap y proporciona una implementación especializada para un mapa que mantiene el orden de iteración, que normalmente es el orden en que se insertaron las claves en el mapa. Consulte LinkedHashMap en Java para saber más sobre LinkedHashMap en Java.
  4. Mapa de árbol - Extiende AbstractMap e implementa NavigableMap para proporcionar un Mapa ordenado. El mapa se ordena según el orden natural de sus claves, o mediante un comparador proporcionado en el momento de la creación del mapa, según el constructor que se utilice. Consulte TreeMap en Java para saber más sobre TreeMap en Java.
  5. IdentityHashMap - Extiende AbstractMap y proporciona una implementación en la que se utiliza la igualdad de referencia en lugar de la igualdad de objetos al comparar claves y valores. En un IdentityHashMap, dos claves k1 y k2 se consideran iguales si y solo si (k1==k2) donde, como en las implementaciones de mapas normales, dos claves k1 y k2 se consideran iguales si y solo si (k1==null ? k2==null :k1.es igual a(k2)).
  6. EnumMap - Amplía AbstractMap y proporciona una implementación de mapa especializada para su uso con claves de tipo enumeración.
  7. Mapa de hash débil - Extiende AbstractMap y proporciona una implementación basada en la tabla Hash de la interfaz Map, con claves débiles. Una entrada en un WeakHashMap se eliminará automáticamente cuando su clave ya no se use normalmente.

Jerarquía de la colección Java

Aquí hay un diagrama que representa la jerarquía del marco de Java Collections. Publicaciones relacionadas
  • Iteradores a prueba de fallos y rápidos en Java
  • Comparador Vs Comparador en Java
  • Java ListIterator con ejemplos
  • Implementación interna de LinkedList en Java
  • Convertir ArrayList a Array en Java
  • Lista inmutable de Java con ejemplos
  • HashSet frente a LinkedHashSet frente a TreeSet en Java
  • Cómo ordenar Java HashMap

Eso es todo sobre el tema Tutorial de Java Collections Framework . Si falta algo o tiene algo que compartir sobre el tema, escriba un comentario.


Etiqueta Java