Java LinkedHashMap

Dans ce didacticiel, nous allons découvrir la classe Java LinkedHashMap et ses opérations à l'aide d'exemples.

La LinkedHashMapclasse du framework de collections Java fournit la table de hachage et l'implémentation de la liste chaînée de l'interface Map.

L' LinkedHashMapinterface étend la classe HashMap pour stocker ses entrées dans une table de hachage. Il maintient en interne une liste à double chaînage parmi toutes ses entrées pour ordonner ses entrées.

Créer un LinkedHashMap

Afin de créer un hashmap lié, nous devons d'abord importer le java.util.LinkedHashMappackage. Une fois que nous importons le package, voici comment créer des hashmaps liés en Java.

 // LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap numbers = new LinkedHashMap(8, 0.6f); 

Dans le code ci-dessus, nous avons créé un hashmap lié nommé numbers.

Ici,

  • Clé - un identifiant unique utilisé pour associer chaque élément (valeur) dans une carte
  • Valeur - éléments associés par les clés dans une carte

Remarquez la pièce new LinkedHashMap(8, 0.6). Ici, le premier paramètre est la capacité et le deuxième paramètre est loadFactor .

  • capacité - La capacité de ce hashmap lié est de 8. Cela signifie qu'il peut stocker 8 entrées.
  • loadFactor - Le facteur de charge de ce hashmap lié est de 0,6. Cela signifie que chaque fois que notre carte de hachage est remplie à 60%, les entrées sont déplacées vers une nouvelle table de hachage de deux fois la taille de la table de hachage d'origine.

Capacité par défaut et facteur de charge

Il est possible de créer un hashmap lié sans définir sa capacité et son facteur de charge. Par exemple,

 //LinkedHashMap with default capacity and load factor LinkedHashMap numbers1 = new LinkedHashMap(); 

Par défaut,

  • la capacité du hashmap lié sera de 16
  • le facteur de charge sera de 0,75

Remarque : La LinkedHashMapclasse nous permet également de définir l'ordre de ses entrées. Par exemple

 // LinkedHashMap with specified order LinkedHashMap numbers2 = new LinkedHashMap(capacity, loadFactor, accessOrder); 

Ici, accessOrder est une valeur booléenne. Sa valeur par défaut est false. Dans ce cas, les entrées du hashmap lié sont classées en fonction de leur ordre d'insertion.

Cependant, si trueest passé en tant qu'accessOrder, les entrées dans le hashmap lié seront classées du moins récemment accédé au plus récemment accédé.

Créer LinkedHashMap à partir d'autres cartes

Voici comment nous pouvons créer un hashmap lié contenant tous les éléments d'autres cartes.

 import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( // Creating a LinkedHashMap of even numbers LinkedHashMap evenNumbers = new LinkedHashMap(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("LinkedHashMap1: " + evenNumbers); // Creating a LinkedHashMap from other LinkedHashMap LinkedHashMap numbers = new LinkedHashMap(evenNumbers); numbers.put("Three", 3); System.out.println("LinkedHashMap2: " + numbers); ) ) 

Production

 LinkedHashMap1: (Deux = 2, Quatre = 4) LinkedHashMap2: (Deux = 2, Quatre = 4, Trois = 3) 

Méthodes de LinkedHashMap

La LinkedHashMapclasse fournit des méthodes qui nous permettent d'effectuer diverses opérations sur la carte.

Insérer des éléments dans LinkedHashMap

  • put() - insère le mappage clé / valeur spécifié dans la carte
  • putAll() - insère toutes les entrées de la carte spécifiée dans cette carte
  • putIfAbsent() - insère le mappage clé / valeur spécifié dans la carte si la clé spécifiée n'est pas présente dans la carte

Par exemple,

  import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( // Creating LinkedHashMap of even numbers LinkedHashMap evenNumbers = new LinkedHashMap(); // Using put() evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("Original LinkedHashMap: " + evenNumbers); // Using putIfAbsent() evenNumbers.putIfAbsent("Six", 6); System.out.println("Updated LinkedHashMap(): " + evenNumbers); //Creating LinkedHashMap of numbers LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); // Using putAll() numbers.putAll(evenNumbers); System.out.println("New LinkedHashMap: " + numbers); ) ) 

Production

 LinkedHashMap d'origine: (Two = 2, Four = 4) LinkedHashMap mis à jour: (Two = 2, Four = 4, Six = 6) New LinkedHashMap: (One = 1, Two = 2, Four = 4, Six = 6) 

Accéder aux éléments LinkedHashMap

1. Utilisation de entrySet (), keySet () et values ​​()

  • entrySet() - renvoie un ensemble de tous les mappages clé / valeur de la carte
  • keySet() - retourne un ensemble de toutes les clés de la carte
  • values() - renvoie un ensemble de toutes les valeurs de la carte

Par exemple,

 import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // Using entrySet() System.out.println("Key/Value mappings: " + numbers.entrySet()); // Using keySet() System.out.println("Keys: " + numbers.keySet()); // Using values() System.out.println("Values: " + numbers.values()); ) ) 

Production

 LinkedHashMap: (Un = 1, Deux = 2, Trois = 3) Mappages clé / valeur: (Un = 1, Deux = 2, Trois = 3) Clés: (Un, Deux, Trois) Valeurs: (1, 2, 3 ) 

2. Utilisation de get () et getOrDefault ()

  • get()- Renvoie la valeur associée à la clé spécifiée. Si la clé n'est pas trouvée, elle revient null.
  • getOrDefault()- Renvoie la valeur associée à la clé spécifiée. Si la clé n'est pas trouvée, elle renvoie la valeur par défaut spécifiée.

Par exemple,

 import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // Using get() int value1 = numbers.get("Three"); System.out.println("Returned Number: " + value1); // Using getOrDefault() int value2 = numbers.getOrDefault("Five", 5); System.out.println("Returned Number: " + value2); ) ) 

Production

 LinkedHashMap: (Un = 1, Deux = 2, Trois = 3) Numéro renvoyé: 3 Numéro renvoyé: 5 

Éléments de LinkedHashMap supprimés

  • remove(key) - renvoie et supprime l'entrée associée à la clé spécifiée de la carte
  • remove(key, value) - supprime l'entrée de la carte uniquement si la clé spécifiée est mappée à la valeur spécifiée et renvoie une valeur booléenne

Par exemple,

 import java.util.LinkedHashMap; class Main ( public static void main(String() args) ( LinkedHashMap numbers = new LinkedHashMap(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // remove method with single parameter int value = numbers.remove("Two"); System.out.println("Removed value: " + value); // remove method with two parameters boolean result = numbers.remove("Three", 3); System.out.println("Is the entry Three removed? " + result); System.out.println("Updated LinkedHashMap: " + numbers); ) ) 

Production

LinkedHashMap: (Un = 1, Deux = 2, Trois = 3) Valeur supprimée: 2 L'entrée (Trois = 3) est-elle supprimée? Vrai LinkedHashMap mis à jour: (Un = 1)

Autres méthodes de LinkedHashMap

Méthode La description
clear() supprime toutes les entrées de la carte
containsKey() vérifie si la carte contient la clé spécifiée et renvoie une valeur booléenne
containsValue() vérifie si la carte contient la valeur spécifiée et renvoie une valeur booléenne
size() renvoie la taille de la carte
isEmpty() vérifie si la carte est vide et renvoie une valeur booléenne

LinkedHashMap contre. HashMap

Le LinkedHashMapet le HashMapimplémentent tous les deux l' Mapinterface. Cependant, il existe des différences entre eux.

  • LinkedHashMapmaintient une liste à double lien en interne. Pour cette raison, il conserve l'ordre d'insertion de ses éléments.
  • La LinkedHashMapclasse nécessite plus de stockage que HashMap. Cela est dû au fait que les LinkedHashMaplistes liées sont conservées en interne.
  • La performance de LinkedHashMapest plus lente que HashMap.

Articles intéressants...