Breaking

Post Top Ad

Your Ad Spot

sábado, 21 de diciembre de 2019

Java LinkedHashMap

En este tutorial, aprenderemos sobre la clase Java LinkedHashMap y sus operaciones con la ayuda de ejemplos.
anuncios a través de carbonoPruebe DigitalOcean hoy y obtenga un crédito gratis de $ 50 aTRAVÉS DE CARBON
La LinkedHashMapclase del marco de colecciones de Java proporciona la tabla hash y la implementación de la lista vinculada de la interfaz Map .
La LinkedHashMapinterfaz extiende la clase HashMap para almacenar sus entradas en una tabla hash. Mantiene internamente una lista doblemente vinculada entre todas sus entradas para ordenar sus entradas.
La clase Java LinkedHashMap extiende la clase HashMap.

Crear un LinkedHashMap

Para crear un hashmap vinculado, primero debemos importar el java.util.LinkedHashMappaquete. Una vez que importamos el paquete, así es cómo podemos crear hashmaps vinculados en Java.
  1. // LinkedHashMap with initial capacity 8 and load factor 0.6
  2. LinkedHashMap<Key, Value> numbers = new LinkedHashMap<>(8, 0.6f);
En el código anterior, hemos creado un hashmap vinculado llamado números .
Aquí,
  • Clave : un identificador único utilizado para asociar cada elemento (valor) en un mapa
  • Valor : elementos asociados por las teclas en un mapa
Fíjate en la parte new LinkedHashMap<>(8, 0.6)Aquí, el primer parámetro es la capacidad y el segundo parámetro es loadFactor .
  • capacidad : la capacidad de este hashmap vinculado es 8. Es decir, puede almacenar 8 entradas.
  • loadFactor : el factor de carga de este hashmap vinculado es 0.6. Esto significa que cada vez que nuestro mapa hash se llena en un 60%, las entradas se mueven a una nueva tabla hash del doble del tamaño de la tabla hash original.
Capacidad predeterminada y factor de carga
Es posible crear un hashmap vinculado sin definir su capacidad y factor de carga. Por ejemplo,
  1. //LinkedHashMap with default capacity and load factor
  2. LinkedHashMap<Key, Value> numbers1 = new LinkedHashMap<>();
Por defecto,
  • la capacidad del hashmap vinculado será de 16
  • el factor de carga será 0.75
Nota : La LinkedHashMapclase también nos permite definir el orden de sus entradas. Por ejemplo
  1. // LinkedHashMap with specified order
  2. LinkedHashMap<Key, Value> numbers2 = new LinkedHashMap<>(capacity, loadFactor, accessOrder);
Aquí, accessOrder es un valor booleano. Su valor predeterminado es falseEn este caso, las entradas en el hashmap vinculado se ordenan según su orden de inserción.
Sin embargo, si truese pasa como accessOrder , las entradas en el hashmap vinculado se ordenarán desde el acceso menos reciente al acceso más reciente.

Crear LinkedHashMap desde otros mapas

Aquí es cómo podemos crear un hashmap vinculado que contenga todos los elementos de otros mapas.
  1. import java.util.LinkedHashMap;
  2. class Main {
  3. public static void main(String[] args) {
  4. // Creating a LinkedHashMap of even numbers
  5. LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>();
  6. evenNumbers.put("Two", 2);
  7. evenNumbers.put("Four", 4);
  8. System.out.println("LinkedHashMap1: " + evenNumbers);
  9. // Creating a LinkedHashMap from other LinkedHashMap
  10. LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(evenNumbers);
  11. numbers.put("Three", 3);
  12. System.out.println("LinkedHashMap2: " + numbers);
  13. }
  14. }
Salida
LinkedHashMap1: {Dos = 2, Cuatro = 4}
LinkedHashMap2: {Dos = 2, Cuatro = 4, Tres = 3}

Métodos de LinkedHashMap

La LinkedHashMapclase proporciona métodos que nos permiten realizar varias operaciones en el mapa.

Insertar elementos en LinkedHashMap

  • put() - inserta la asignación de clave / valor especificada en el mapa
  • putAll() - inserta todas las entradas del mapa especificado en este mapa
  • putIfAbsent() - inserta la asignación de clave / valor especificada en el mapa si la clave especificada no está presente en el mapa
Por ejemplo,
  1. import java.util.LinkedHashMap;
  2. class Main {
  3. public static void main(String[] args) {
  4. // Creating LinkedHashMap of even numbers
  5. LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>();
  6. // Using put()
  7. evenNumbers.put("Two", 2);
  8. evenNumbers.put("Four", 4);
  9. System.out.println("Original LinkedHashMap: " + evenNumbers);
  10. // Using putIfAbsent()
  11. evenNumbers.putIfAbsent("Six", 6);
  12. System.out.println("Updated LinkedHashMap(): " + evenNumbers);
  13. //Creating LinkedHashMap of numbers
  14. LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
  15. numbers.put("One", 1);
  16. // Using putAll()
  17. numbers.putAll(evenNumbers);
  18. System.out.println("New LinkedHashMap: " + numbers);
  19. }
  20. }
Salida
LinkedHashMap original: {Dos = 2, Cuatro = 4}
LinkedHashMap actualizado: {Two = 2, Four = 4, Six = 6}
Nuevo LinkedHashMap: {One = 1, Two = 2, Four = 4, Six = 6}

Acceder a elementos LinkedHashMap

1. Usando entrySet (), keySet () y values ​​()
  • entrySet() - devuelve un conjunto de todas las asignaciones de clave / valor del mapa
  • keySet() - devuelve un conjunto de todas las teclas del mapa
  • values() - devuelve un conjunto de todos los valores del mapa
Por ejemplo,
  1. import java.util.LinkedHashMap;
  2. class Main {
  3. public static void main(String[] args) {
  4. LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
  5. numbers.put("One", 1);
  6. numbers.put("Two", 2);
  7. numbers.put("Three", 3);
  8. System.out.println("LinkedHashMap: " + numbers);
  9. // Using entrySet()
  10. System.out.println("Key/Value mappings: " + numbers.entrySet());
  11. // Using keySet()
  12. System.out.println("Keys: " + numbers.keySet());
  13. // Using values()
  14. System.out.println("Values: " + numbers.values());
  15. }
  16. }
Salida
LinkedHashMap: {Uno = 1, Dos = 2, Tres = 3}
Asignaciones de clave / valor: [Uno = 1, Dos = 2, Tres = 3]
Claves: [Uno, Dos, Tres]
Valores: [1, 2, 3]
2. Usando get () y getOrDefault ()
  • get()- Devuelve el valor asociado con la clave especificada. Si no se encuentra la clave, vuelve null.
  • getOrDefault()- Devuelve el valor asociado con la clave especificada. Si no se encuentra la clave, devuelve el valor predeterminado especificado.
Por ejemplo,
  1. import java.util.LinkedHashMap;
  2. class Main {
  3. public static void main(String[] args) {
  4. LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
  5. numbers.put("One", 1);
  6. numbers.put("Two", 2);
  7. numbers.put("Three", 3);
  8. System.out.println("LinkedHashMap: " + numbers);
  9. // Using get()
  10. int value1 = numbers.get("Three");
  11. System.out.println("Returned Number: " + value1);
  12. // Using getOrDefault()
  13. int value2 = numbers.getOrDefault("Five", 5);
  14. System.out.println("Returned Number: " + value2);
  15. }
  16. }
Salida
LinkedHashMap: {Uno = 1, Dos = 2, Tres = 3}
Número devuelto: 3
Número devuelto: 5

Elementos eliminados de LinkedHashMap

  • remove(key)- devuelve y elimina la entrada asociada con la clave especificada del mapa
  • remove(key, value)- elimina la entrada del mapa solo si la clave especificada asignada es el valor especificado y devuelve un valor booleano
Por ejemplo,
  1. import java.util.LinkedHashMap;
  2. class Main {
  3. public static void main(String[] args) {
  4. LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
  5. numbers.put("One", 1);
  6. numbers.put("Two", 2);
  7. numbers.put("Three", 3);
  8. System.out.println("LinkedHashMap: " + numbers);
  9. // remove method with single parameter
  10. int value = numbers.remove("Two");
  11. System.out.println("Removed value: " + value);
  12. // remove method with two parameters
  13. boolean result = numbers.remove("Three", 3);
  14. System.out.println("Is the entry Three removed? " + result);
  15. System.out.println("Updated LinkedHashMap: " + numbers);
  16. }
  17. }
Salida
LinkedHashMap: {Uno = 1, Dos = 2, Tres = 3}
Valor eliminado: 2
¿Se ha eliminado la entrada {Three = 3}? Cierto
LinkedHashMap actualizado: {One = 1}

Otros métodos de LinkedHashMap

MétodoDescripción
clear()elimina todas las entradas del mapa
containsKey()comprueba si el mapa contiene la clave especificada y devuelve un valor booleano
containsValue()comprueba si el mapa contiene el valor especificado y devuelve un valor booleano
size()devuelve el tamaño del mapa
isEmpty()comprueba si el mapa está vacío y devuelve un valor booleano

LinkedHashMap Vs. HashMap

Tanto el LinkedHashMapcomo el HashMapimplementan la Mapinterfaz. Sin embargo, existen algunas diferencias entre ellos.
  • LinkedHashMapmantiene una lista doblemente vinculada internamente. Debido a esto, mantiene el orden de inserción de sus elementos.
  • La LinkedHashMapclase requiere más almacenamiento que HashMapEsto se debe a que LinkedHashMapmantiene listas vinculadas internamente.
  • El rendimiento de LinkedHashMapes más lento que HashMap.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas