aprendizaje en línea de Java: puede comprender la serie de mapas detallados

Aprendizaje en línea de Luban Academy java

Hoy hablamos de la colección de mapas súper importante en java.

1. Descripción general de la colección de mapas

Interfaz pública Mapa <K, V>

En primer lugar, en la interfaz del mapa, podemos ver que la estructura de valores almacenados del mapa está estructurada en pares clave-valor. En términos simples, la colección de mapas es un objeto que asigna claves a valores. Y un mapa no puede contener duplicados. Las claves; cada clave solo se puede asignar a un valor.

2. Estructura de almacenamiento de mapas

Inserte la descripción de la imagen aquí

Como se muestra en la figura anterior, la forma de almacenar datos en el mapa es que una clave corresponde a un valor de valor, y el valor de la clave puede ser nulo, pero debido a que el valor de la clave no se puede repetir, el caso de que la clave sea nula solo puede suceder una vez y el valor del valor no se realiza. Requisito, se puede repetir o nulo múltiple, un par de pares clave-valor se colocan en una matriz de entrada en la parte inferior.

Al realizar una consulta, la ubicación correspondiente al valor se encuentra en función del valor del código hash del valor de la clave. Si el valor de la misma clave se asigna varias veces, el valor asignado posteriormente anulará el valor asignado antes.

3. Resume algunas características del mapa

La colección Map es una colección de dos columnas y un elemento contiene dos valores (una clave y un valor).

Los tipos de datos de la clave y el valor de los elementos de la colección de mapas pueden ser iguales o diferentes.

Para los elementos de la colección Map, no se permite que la clave se repita y el valor se puede repetir.

Los elementos de la colección Map tienen una correspondencia de uno a uno entre clave y valor.

4. Clase de implementación del mapa

Inserte la descripción de la imagen aquí

Aquí hay algunas clases de implementación más comúnmente utilizadas para explicar

4.1 HashMap

Esta es una clase de implementación que usamos más a diario. Su implementación subyacente es matriz + lista vinculada, y tanto los valores clave como los valores pueden ser nulos. El tamaño de memoria inicial es 16, y el elemento de almacenamiento general se expande cuando alcanza la mitad del tamaño. . El subproceso no es seguro, pero la ventaja es que es más eficiente. HashMap no admite la sincronización, es decir, la escritura de varios subprocesos al mismo tiempo puede causar incoherencia de datos. Si necesita admitir la sincronización, puede utilizar el método de colecciones sincronizado.

4.2 Hashtable

Su implementación subyacente es matriz + lista vinculada, y la clave y el valor no pueden almacenar nulos. Debido a que la mayoría de las operaciones están bloqueadas, Hashtable admite operaciones síncronas, pero es precisamente esto lo que conduce a la velocidad de escritura de Hashtable Más lento, se usa cuando el nivel de seguridad de los datos es alto.

4.3 ConcurrentHashMap

Su implementación subyacente es una matriz segmentada + lista vinculada. La sincronización de Hashtable es para toda la tabla Hash, es decir, cada vez que se bloquea toda la tabla para permitir que el hilo monopolice. ConcurrentHashMap permite que se realicen múltiples operaciones de modificación al mismo tiempo. La clave es usar la separación de bloqueo La tecnología puede proporcionar la misma seguridad de subprocesos al dividir todo el mapa en N segmentos, pero la eficiencia aumenta N veces y el valor predeterminado aumenta 16 veces.

4.4 LinkedHashMap

LinkedHashMap puede ser considerado como una combinación de HashMap y LinkedList, es decir, utiliza HashMap para manipular la estructura de datos y LinkedList para mantener el orden de inserción de elementos. Mantiene una lista doblemente enlazada internamente. LinkedHashMap es una subclase de HashMap. Sus elementos están ordenados en el orden de inserción. La velocidad transversal es más lenta.

4.5 Mapa de árbol

La implementación de NavigableMap se basa en el árbol Rojo-Negro. El mapeo se ordena según el orden natural de sus claves, o según el Comparador proporcionado cuando se crea el mapeo. Depende del método de construcción utilizado. La ventaja es que el valor de la clave puede ser ordenado, único, el valor está ordenado y repetible, y la estructura de datos subyacente es un árbol binario balanceado.

5. Métodos comunes en la interfaz del mapa

public V put (clave K, valor V): agregue la clave especificada y el valor especificado a la colección de mapas.

public V remove (clave de objeto): elimina el elemento de par clave-valor correspondiente a la clave especificada de la colección Map y devuelve el valor del elemento eliminado.

public V get (clave de objeto): obtiene el valor correspondiente en la colección de mapas de acuerdo con la clave especificada.

boolean containsKey (clave de objeto): determina si el conjunto contiene la clave especificada.

public SetkeySet (): Obtiene todas las claves de la colección de mapas y las almacena en la colección de conjuntos.

public SetkeySet (): Obtiene todas las claves de la colección de mapas y las almacena en la colección de conjuntos.

6, recorrido del mapa

Aquí hay varias formas de recorrer algunas colecciones de mapas

6.1 Implementación usando Entry

Use Entry en el bucle for para implementar el recorrido del mapa

Map<String,String> map = new HashMap<>();

map.put("大白", "白色");

map.put("柯基", "黄色");

for(Map.Entry<String, String> entry : map.entrySet()){

    String mapKey = entry.getKey();

    String mapValue = entry.getValue();

    System.out.println(mapKey+":"+mapValue);

}

resultado de la operación:

Inserte la descripción de la imagen aquí

6.2 Obtener clave o valores a través de Entry

Iterar claves o valores en un bucle for generalmente es adecuado para usar cuando solo se necesitan las claves o valores en el mapa, y tiene un mejor rendimiento que usar entrySet

Map<String,String> map = new HashMap<>();

map.put("大白", "白色");

map.put("柯基", "黄色");

//key

for(String key : map.keySet()){

    System.out.println(key);

}

//value

for(String value : map.values()){

    System.out.println(value);

}

resultado de la operación:

Inserte la descripción de la imagen aquí

6.3 Atravesar el iterador

Map<String,String> map = new HashMap<>();

        map.put("大白", "白色");

        map.put("柯基", "黄色");

        Iterator<Entry<String, String>> entries = map.entrySet().iterator();

        while(entries.hasNext()){

            Entry<String, String> entry = entries.next();

            String key = entry.getKey();

            String value = entry.getValue();

            System.out.println(key+":"+value);

        }

resultado de la operación:

Inserte la descripción de la imagen aquí

6.4 Recorrido por hallazgo clave

A través del recorrido del valor de búsqueda de claves, la eficiencia de este método es relativamente baja, porque es una operación que requiere mucho tiempo obtener el valor de la clave.

Map <String, String> map = new HashMap <> ();

    map.put("大白", "白色");

    map.put("柯基", "黄色");

    for(String key : map.keySet()){

        String value = map.get(key);

        System.out.println(key+":"+value);

    }

resultado de la operación:

Inserte la descripción de la imagen aquí

resumen

Bueno, lo anterior es mi propio resumen de algunos conocimientos sobre mapas y la implementación de código de las cuatro formas de recorrido de mapas. Bienvenidos a todos para dar sugerencias, aprender y progresar juntos, ¡gracias!

Supongo que te gusta

Origin blog.csdn.net/LuBanXue/article/details/108856446
Recomendado
Clasificación