Java - Marco de colecciones
Antes de Java 2, Java proporcionaba clases ad hoc como Dictionary, Vector, Stack, y Propiedades almacenar y manipular grupos de objetos. Aunque estas clases fueron bastante útiles, carecían de un tema central unificador. Por lo tanto, la forma en que usó Vector fue diferente de la forma en que usó Propiedades.
El marco de las colecciones se diseñó para cumplir varios objetivos, como −
-
El marco tenía que ser de alto rendimiento. Las implementaciones para las colecciones fundamentales (matrices dinámicas, listas enlazadas, árboles y tablas hash) debían ser muy eficientes.
-
El marco tenía que permitir que diferentes tipos de colecciones funcionaran de manera similar y con un alto grado de interoperabilidad.
-
El marco tenía que ampliar y/o adaptar una colección fácilmente.
Con este fin, todo el marco de las colecciones está diseñado en torno a un conjunto de interfaces estándar. Varias implementaciones estándar como LinkedList, HashSet, y Conjunto de árboles , de estas interfaces se proporcionan para que las pueda usar tal cual y también puede implementar su propia colección, si lo desea.
Un marco de colecciones es una arquitectura unificada para representar y manipular colecciones. Todos los marcos de las colecciones contienen lo siguiente −
-
Interfaces − Estos son tipos de datos abstractos que representan colecciones. Las interfaces permiten manipular las colecciones independientemente de los detalles de su representación. En los lenguajes orientados a objetos, las interfaces generalmente forman una jerarquía.
-
Implementaciones, es decir, Clases − Estas son las implementaciones concretas de las interfaces de colección. En esencia, son estructuras de datos reutilizables.
-
Algoritmos − Estos son los métodos que realizan cálculos útiles, como buscar y ordenar, en objetos que implementan interfaces de colección. Se dice que los algoritmos son polimórficos:es decir, el mismo método se puede usar en muchas implementaciones diferentes de la interfaz de recopilación adecuada.
Además de las colecciones, el marco define varias clases e interfaces de mapa. Los mapas almacenan pares clave/valor. Aunque los mapas no son colecciones en el uso correcto del término, pero están totalmente integrados con las colecciones.
Las interfaces de la colección
El marco de las colecciones define varias interfaces. Esta sección proporciona una descripción general de cada interfaz −
Sr.No. | Interfaz y descripción |
---|---|
1 | La interfaz de la colección Esto le permite trabajar con grupos de objetos; está en la parte superior de la jerarquía de colecciones. |
2 | La interfaz de lista Esto amplía Colección y una instancia de List almacena una colección ordenada de elementos. |
3 | El conjunto Esto amplía Collection para manejar conjuntos, que deben contener elementos únicos. |
4 | El conjunto ordenado Esto amplía Set para manejar conjuntos ordenados. |
5 | El mapa Esto asigna claves únicas a valores. |
6 | El Mapa.Entrada Esto describe un elemento (un par clave/valor) en un mapa. Esta es una clase interna de Map. |
7 | El mapa ordenado Esto extiende Map para que las claves se mantengan en orden ascendente. |
8 | La enumeración Esta interfaz heredada define los métodos mediante los cuales puede enumerar (obtener uno a la vez) los elementos en una colección de objetos. Esta interfaz heredada ha sido reemplazada por Iterator. |
Las clases de colección
Java proporciona un conjunto de clases de colección estándar que implementan interfaces de colección. Algunas de las clases brindan implementaciones completas que se pueden usar tal cual y otras son clases abstractas, que brindan implementaciones esqueléticas que se usan como puntos de partida para crear colecciones concretas.
Las clases de colección estándar se resumen en la siguiente tabla −
Sr.No. | Clase y descripción |
---|---|
1 | Colección Abstracta Implementa la mayor parte de la interfaz de la Colección. |
2 | Lista de Resumen Extiende AbstractCollection e implementa la mayor parte de la interfaz List. |
3 | Lista secuencial abstracta Extiende AbstractList para que lo use una colección que usa acceso secuencial en lugar de aleatorio de sus elementos. |
4 | Lista enlazada Implementa una lista enlazada al extender AbstractSequentialList. |
5 | Lista de matrices Implementa una matriz dinámica al extender AbstractList. |
6 | Conjunto abstracto Extiende AbstractCollection e implementa la mayor parte de la interfaz Set. |
7 | Conjunto hash Extiende AbstractSet para usar con una tabla hash. |
8 | Conjunto de hash vinculado Extiende HashSet para permitir iteraciones de orden de inserción. |
9 | Conjunto de árboles Implementa un conjunto almacenado en un árbol. Extiende AbstractSet. |
10 | Mapa abstracto Implementa la mayor parte de la interfaz del Mapa. |
11 | Mapa hash Extiende AbstractMap para usar una tabla hash. |
12 | Mapa de árbol Extiende AbstractMap para usar un árbol. |
13 | Mapa de hash débil Extiende AbstractMap para usar una tabla hash con claves débiles. |
14 | Mapa de hash vinculado Extiende HashMap para permitir iteraciones de orden de inserción. |
15 | IdentityHashMap Amplía AbstractMap y utiliza la igualdad de referencias al comparar documentos. |
AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList y Mapa abstracto Las clases proporcionan implementaciones esqueléticas de las interfaces de la colección principal, para minimizar el esfuerzo requerido para implementarlas.
Las siguientes clases heredadas definidas por java.util se han discutido en el capítulo anterior:
Sr.No. | Clase y descripción |
---|---|
1 | Vector Esto implementa una matriz dinámica. Es similar a ArrayList, pero con algunas diferencias. |
2 | Apilar Stack es una subclase de Vector que implementa una pila estándar de último en entrar, primero en salir. |
3 | Diccionario Dictionary es una clase abstracta que representa un depósito de almacenamiento de clave/valor y funciona de manera muy similar a Map. |
4 | tabla hash Hashtable era parte del java.util original y es una implementación concreta de un Diccionario. |
5 | Propiedades Properties es una subclase de Hashtable. Se utiliza para mantener listas de valores en las que la clave es una cadena y el valor también es una cadena. |
6 | Conjunto de bits Una clase BitSet crea un tipo especial de matriz que contiene valores de bits. Esta matriz puede aumentar de tamaño según sea necesario. |
Los algoritmos de recopilación
El marco de colecciones define varios algoritmos que se pueden aplicar a colecciones y mapas. Estos algoritmos se definen como métodos estáticos dentro de la clase Collections.
Varios de los métodos pueden lanzar una ClassCastException , que ocurre cuando se intenta comparar tipos incompatibles o una UnsupportedOperationException , que ocurre cuando se intenta modificar una colección no modificable.
Las colecciones definen tres variables estáticas:EMPTY_SET, EMPTY_LIST y EMPTY_MAP. Todos son inmutables.
Sr.No. | Algoritmo y descripción |
---|---|
1 | Los algoritmos de recopilación Aquí hay una lista de todas las implementaciones del algoritmo. |
¿Cómo utilizar un iterador?
A menudo, querrá recorrer los elementos de una colección. Por ejemplo, es posible que desee mostrar cada elemento.
La forma más fácil de hacer esto es emplear un iterador, que es un objeto que implementa la interfaz Iterator o ListIterator.
Iterator le permite recorrer una colección, obtener o eliminar elementos. ListIterator amplía Iterator para permitir el recorrido bidireccional de una lista y la modificación de elementos.
Sr.No. | Método y descripción del iterador |
---|---|
1 | Uso del iterador de Java Aquí hay una lista de todos los métodos con ejemplos proporcionados por las interfaces Iterator y ListIterator. |
¿Cómo usar un comparador?
Tanto TreeSet como TreeMap almacenan elementos ordenados. Sin embargo, es el comparador el que define con precisión qué orden ordenado significa.
Esta interfaz nos permite ordenar una colección dada de diferentes maneras. Además, esta interfaz se puede usar para ordenar cualquier instancia de cualquier clase (incluso las clases que no podemos modificar).
Sr.No. | Método y descripción del iterador |
---|---|
1 | Uso del comparador de Java Aquí hay una lista de todos los métodos con ejemplos proporcionados por Comparator Interface. |
Resumen
El marco de colecciones de Java brinda al programador acceso a estructuras de datos preempaquetadas, así como a algoritmos para manipularlos.
Una colección es un objeto que puede contener referencias a otros objetos. Las interfaces de colección declaran las operaciones que se pueden realizar en cada tipo de colección.
Las clases e interfaces del marco de las colecciones están en el paquete java.util.
Java