Java: colección y colección de mapas

Descripción general de las colecciones de Java

inserte la descripción de la imagen aquí

Una colección puede verse como un contenedor para almacenar información de objetos. Todas las clases de colección están en el paquete java.util, pero las clases de colección que admiten subprocesos múltiples están en el paquete java.util.concurrent.

La clase de colección de Java se deriva principalmente de dos interfaces raíz, a saber, Collection y Map.

Las clases de colección en Java se pueden dividir en dos categorías: una es para implementar la interfaz de colección ; la otra es para implementar la interfaz de mapa

Collection es una interfaz de colección básica, que puede acomodar un conjunto de elementos de colección (Elemento).

El mapa no hereda la interfaz de la colección y está en una relación paralela con la colección. Map proporciona una asignación de clave a valor. Un mapa no puede contener la misma clave y cada clave solo puede asignarse a un valor.

1. Colección

1. Subinterfaces y clases de implementación de la interfaz Collection

Las subinterfaces de la interfaz de colección incluyen: interfaz de configuración e interfaz de lista

Las clases de implementación de la interfaz Set incluyen principalmente: HashSet , TreeSet , LinkedHashSet , etc.

Las clases de implementación de la interfaz List incluyen principalmente: ArrayList , LinkedList , Stack , Vector , etc.

List expresa una colección ordenada.Cada elemento en List tiene un índice.Usando esta interfaz se puede controlar con precisión la posición de inserción de cada elemento. Los usuarios también pueden usar el índice para acceder a los elementos de la Lista, que es similar a la matriz de Java.

La característica de la interfaz Set es que no puede contener elementos duplicados. Para dos elementos cualesquiera elemento1 y elemento2 en Conjunto, elementol.equals(elemento2) = falso. Además, Set tiene como máximo un elemento nulo. Esta interfaz imita el concepto matemático de conjuntos. 

La capa inferior de ArrayList es una matriz

La capa inferior de LinkedList es una lista doblemente enlazada

La capa inferior de LinkedHashSet es LinkedHashMap

La capa inferior de HashSet es HashMap

La capa inferior de TreeSet es TreeMap

Si los elementos de almacenamiento están ordenados Si el elemento de almacenamiento es repetible
lista (lista) ordenado repetible
Cola ordenado repetible
conjunto (conjunto) fuera de servicio no repetible

La colección es una colección de una sola columna : cada elemento es un individuo separado

La siguiente figura se cita del nodo de poder - Sr. Du

 1. Colección de listas

(1) Lista de matriz

La estructura de datos subyacente es una matriz;

Consulta rápida, adición y eliminación lentas

Hilo inseguro, alta eficiencia.

(2) Lista enlazada

La estructura de datos subyacente es una lista enlazada

La consulta es lenta, y la adición y eliminación son rápidas.

Hilo inseguro, alta eficiencia.

(3) Vectores

La estructura de datos subyacente es una matriz,

Consulta rápida, adición y eliminación lentas.

Hilo seguro, baja eficiencia.

(4) Pila

Es la clase de implementación de Vector, que implementa una pila de último en entrar, primero en salir.

Stack proporciona cinco métodos adicionales que permiten usar Vector como una pila. Los métodos push y pop, así como el método peek obtienen los elementos de la pila, el método vacío comprueba si la pila está vacía y el método de búsqueda comprueba la posición de un elemento en la pila. Una pila es una pila vacía inmediatamente después de su creación.

2. Recolección de colas

Una cola es una tabla lineal especial que solo permite eliminaciones en el extremo frontal de la tabla e inserciones en el extremo posterior de la tabla.

La clase Deque es la clase de implementación de Queue. La clase LinkedList implementa tanto la interfaz List como la interfaz Deque (también implementa la interfaz Queue). La interfaz Queue restringe el acceso a los métodos LinkedList, es decir, si el tipo de parámetro en el método es Queue, solo puede acceder a los métodos definidos por la interfaz Queue, pero no puede acceder directamente a los métodos que no son Queue de LinkedList. para que sólo se pueda utilizar el método apropiado.

3. Establecer colección

(1) clase HashSet

La estructura de datos subyacente es una tabla hash.

El rendimiento de acceso y búsqueda es bueno.

El valor del elemento de colección puede ser nulo

(2) conjunto de hash vinculado

Es una subclase de HashSet y tiene las características de HashSet.

La estructura de datos subyacente es una lista vinculada y una tabla hash. La lista vinculada mantiene el orden de los elementos, y el orden de los elementos es coherente con el orden en que se agregaron. La unicidad de los elementos está garantizada por la tabla hash.

(3) Conjunto de árboles

La estructura de datos subyacente es un árbol binario, que es la clase de implementación de la interfaz SortedSet, que puede garantizar que los elementos estén ordenados.

TreeSet admite dos tipos de clasificación de elementos: clasificación natural y clasificación de objetos personalizados.

2. Mapa

Las clases de implementación de la interfaz Map incluyen principalmente: HashMap, TreeMap , Hashtable , ConcurrentHashMap y Properties, etc.

La interfaz Map utiliza el método de almacenamiento Map<k,v> de par clave-valor para almacenar datos con una relación de mapeo. Por lo tanto, la colección Map almacena dos

Valor de grupo, se usa un grupo de valores para guardar la clave en el Mapa, y otro grupo de valores se usa para guardar el valor en el Mapa, la clave y el valor pueden ser

Es cualquier tipo de dato, el valor de la clave no permite la duplicación y puede ser nulo. Si ya hay duplicados en el Mapa al agregar pares clave-valor

clave, el valor recién agregado sobrescribirá el valor correspondiente original

El principio subyacente de HashMap es el mismo que el de HashTable. Después de la versión de Java 8 , si la colisión de hash en la misma posición es mayor que 8 , la lista enlazada se convierte en un árbol rojo-negro.

La capa inferior de HashTable es una tabla hash compuesta por el método de dirección de cadena (es decir, matriz + lista vinculada de un solo elemento)

La capa inferior de LinkedHashMap se modifica de HashMap, que contiene una lista doblemente enlazada que mantiene el orden de inserción.

La capa inferior de TreeMap es un árbol rojo-negro

El mapa es una colección de dos columnas : cada elemento es un par de datos, y el par de datos se trata como un todo para operar

La siguiente figura se cita del nodo de poder - Sr. Du

1, tabla hash, mapa hash

HashMap y HashTable son dos implementaciones típicas de la interfaz Map, y la relación entre ellas es completamente similar a ArrayList y Vertor. HashTable es una antigua clase de implementación de Map. Los métodos que proporciona son engorrosos y básicamente no se utilizan en la actualidad.

El subproceso HashMap no es seguro, el subproceso HashTable es seguro.

HashMap suele ser más rápido que HashTable

La clave y el valor de HashMap pueden ser valores nulos. HashTable no permite que se utilicen valores nulos como clave y valor. Si se coloca nulo en HashTable, se producirá una excepción de puntero nulo.

2. Clase LinkedHashMap

LinkedHashMap utiliza una lista doblemente enlazada para mantener el orden de los pares clave-valor (de hecho, solo se debe considerar el orden de las claves). La lista enlazada es responsable de mantener el orden de iteración del Mapa, que es consistente con la inserción. orden, por lo que el rendimiento es menor que el de HashMap, pero el acceso iterativo a los elementos en el Mapa Todos los elementos tienen un mejor rendimiento.

3. Clase de propiedades

La clase Propiedades es una subclase de la clase Hashtable, que es equivalente a un Mapa cuya clave y valor son ambos tipos de Cadena, y se usa principalmente para leer archivos de configuración.

4. clase TreeMap

TreeMap es la clase de implementación de SortedMap, que es una estructura de datos de árbol binario, y cada par clave-valor se usa como un nodo del árbol binario. Cuando TreeMap almacena pares clave-valor, necesita ordenar los nodos según la clave. TreeMap también tiene dos métodos de clasificación:

Clasificación natural: todas las claves del TreeMap deben implementar la interfaz Comparable, y todas las claves deben ser objetos de la misma clase; de ​​lo contrario, se lanzará una ClassCastException.

Clasificación personalizada de objetos personalizados: al crear un TreeMap, se pasa un objeto Comparator, que es responsable de clasificar todas las claves en el TreeMap.

Supongo que te gusta

Origin blog.csdn.net/MinggeQingchun/article/details/121224068
Recomendado
Clasificación