Classe Java LinkedHashMap : Un guide convivial pour les débutants

Introduction

Bonjour à tous, futurs sorciers Java ! Aujourd'hui, nous allons entamer un voyage passionnant dans le monde de LinkedHashMap. Ne vous inquiétez pas si vous n'avez jamais écrit une ligne de code avant – je serai votre guide aimable et nous explorerons ce sujet étape par étape. À la fin de ce tutoriel, vous serez étonné de combien vous avez appris !

Java - LinkedHashMap

LinkedHashMap est comme une boîte magique qui peut stocker vos articles (qu'on appelle des paires clé-valeur en programmation) dans un ordre spécifique. Imaginez que vous organisez vos livres préférés sur un étagère. Non seulement pouvez-vous rapidement trouver n'importe quel livre que vous voulez, mais vous pouvez également les conserver dans l'ordre dans lequel vous les avez ajoutés ou en fonction de la fréquence avec laquelle vous les lisez. C'est exactement ce que fait LinkedHashMap pour nos données !

Déclaration de classe

Commençons par la déclaration d'une LinkedHashMap en Java :

import java.util.LinkedHashMap;

public class MonExempleLinkedHashMap {
public static void main(String[] args) {
LinkedHashMap<String, Integer> monBookshelf = new LinkedHashMap<>();
}
}

Dans cet exemple, nous créons une LinkedHashMap appelée monBookshelf. La partie <String, Integer> indique à Java que nous utiliserons des clés de type String (titres de livres) et des valeurs de type Integer (peut-être le nombre de pages). Ne vous inquiétez pas si cela semble confus maintenant – nous allons le décomposer au fur et à mesure !

Paramètres

Lorsque nous travaillons avec LinkedHashMap, nous avons quelques paramètres à considérer :

  1. initialCapacity : C'est comme décider de la taille initiale de votre étagère.
  2. loadFactor : Pensez-y comme à la mesure до laquelle votre étagère peut être remplie avant qu'il vous faille une plus grande.
  3. accessOrder : Ça détermine si vos livres sont arrangés par ordre d'ajout ou de fréquence d'accès.

Voyons un exemple :

LinkedHashMap<String, Integer> monBookshelf = new LinkedHashMap<>(16, 0.75f, true);

Ici, nous disons que notre étagère initiale peut contenir 16 livres, nous envisagerons d'obtenir une étagère plus grande lorsque celle-ci est à 75% de sa capacité, et nous voulons organiser les livres en fonction de la fréquence à laquelle nous y accédons.

Constructeurs de classe

LinkedHashMap offre plusieurs moyens de créer notre étagère magique. Voici les principaux constructeurs :

  1. LinkedHashMap(): Crée une LinkedHashMap vide avec les paramètres par défaut.
  2. LinkedHashMap(int initialCapacity): Spécifie la capacité initiale.
  3. LinkedHashMap(int initialCapacity, float loadFactor): Spécifie à la fois la capacité initiale et le facteur de charge.
  4. LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder): Spécifie les trois paramètres.
  5. LinkedHashMap(Map<? extends K, ? extends V> m): Crée une LinkedHashMap avec les mêmes mappages que la map spécifiée.

Essayons de créer des LinkedHashMaps en utilisant différents constructeurs :

LinkedHashMap<String, Integer> shelf1 = new LinkedHashMap<>();
LinkedHashMap<String, Integer> shelf2 = new LinkedHashMap<>(20);
LinkedHashMap<String, Integer> shelf3 = new LinkedHashMap<>(20, 0.8f);
LinkedHashMap<String, Integer> shelf4 = new LinkedHashMap<>(20, 0.8f, true);

Map<String, Integer> existingMap = new HashMap<>();
existingMap.put("Java Basics", 200);
LinkedHashMap<String, Integer> shelf5 = new LinkedHashMap<>(existingMap);

Chacun de ces créations produit une "étagère" légèrement différente en fonction de nos besoins. Java n'est-ce pas incroyablement flexible ?

Méthodes de classe

Maintenant, examinons quelques-unes des méthodes les plus couramment utilisées dans LinkedHashMap. Je les présente dans un format de tableau pour une référence facile :

Méthode Description
put(K key, V value) Ajoute une nouvelle paire clé-valeur à la LinkedHashMap
get(Object key) Récupère la valeur associée à la clé spécifiée
remove(Object key) Supprime le mappage pour la clé spécifiée
clear() Supprime tous les mappages de la LinkedHashMap
size() Retourne le nombre de paires clé-valeur dans la LinkedHashMap
isEmpty() Retourne vrai si la LinkedHashMap est vide
containsKey(Object key) Retourne vrai si la LinkedHashMap contient la clé spécifiée
containsValue(Object value) Retourne vrai si la LinkedHashMap contient la valeur spécifiée
keySet() Retourne un ensemble de toutes les clés de la LinkedHashMap
values() Retourne une collection de toutes les valeurs de la LinkedHashMap
entrySet() Retourne un ensemble de toutes les paires clé-valeur de la LinkedHashMap

Voyons quelques-unes de ces méthodes en action :

LinkedHashMap<String, Integer> monBookshelf = new LinkedHashMap<>();

// Ajout de livres à notre étagère
monBookshelf.put("Java Basics", 200);
monBookshelf.put("Data Structures", 350);
monBookshelf.put("Algorithms", 400);

// Récupération du nombre de pages pour "Java Basics"
int javaPages = monBookshelf.get("Java Basics");
System.out.println("Java Basics a " + javaPages + " pages.");

// Vérification si nous avons un livre sur Python
boolean hasPython = monBookshelf.containsKey("Python for Beginners");
System.out.println("Avons-nous un livre Python ? " + hasPython);

// Suppression du livre Algorithms
monBookshelf.remove("Algorithms");

// Impression de tous les titres de livres
for (String title : monBookshelf.keySet()) {
System.out.println("Titre du livre : " + title);
}

Ce fragment de code montre comment nous pouvons ajouter des livres à notre étagère, récupérer des informations les concernant, vérifier si nous avons certains livres, supprimer des livres et lister tous les livres que nous avons. Très pratique, non ?

Méthodes héritées

LinkedHashMap hérite également de méthodes de ses classes parentes. Voici quelques-unes des plus importantes :

Hérité de Méthodes
HashMap clone(), compute(), computeIfAbsent(), computeIfPresent(), merge()
AbstractMap equals(), hashCode(), toString()
Object finalize(), getClass(), notify(), notifyAll(), wait()

Ces méthodes héritées fournissent des fonctionnalités supplémentaires qui peuvent être très utiles dans certaines situations.

Exemple de récupération d'une valeur de LinkedHashMap

Pour terminer, un exemple complet de la création d'une LinkedHashMap, l'ajout de quelques valeurs et leur récupération :

import java.util.LinkedHashMap;

public class ExempleBookshelf {
public static void main(String[] args) {
LinkedHashMap<String, Integer> monBookshelf = new LinkedHashMap<>();

// Ajout de livres à notre étagère
monBookshelf.put("Java Basics", 200);
monBookshelf.put("Data Structures", 350);
monBookshelf.put("Algorithms", 400);

// Récupération et impression des informations sur chaque livre
for (String title : monBookshelf.keySet()) {
int pages = monBookshelf.get(title);
System.out.println("Le livre '" + title + "' a " + pages + " pages.");
}

// Récupération d'un livre spécifique
String bookToFind = "Data Structures";
if (monBookshelf.containsKey(bookToFind)) {
int pages = monBookshelf.get(bookToFind);
System.out.println("\nJe l'ai trouvé ! '" + bookToFind + "' a " + pages + " pages.");
} else {
System.out.println("\nDésolé, nous n'avons pas '" + bookToFind + "' sur notre étagère.");
}
}
}

Sortie

Lorsque vous exécutez ce code, vous verrez une sortie similaire à ceci :

Le livre 'Java Basics' a 200 pages.
Le livre 'Data Structures' a 350 pages.
Le livre 'Algorithms' a 400 pages.

Je l'ai trouvé ! 'Data Structures' a 350 pages.

Et voilà ! Vous venez de créer votre propre étagère numérique en utilisant LinkedHashMap. Vous pouvez ajouter des livres, découvrir combien de pages ils contiennent et même vérifier si un livre particulier se trouve sur votre étagère. La programmation n'est-elle pas incroyable ?

N'oubliez pas, tout comme organiser une véritable étagère, plus vous pratiquerez l'utilisation de LinkedHashMap, plus vous vous sentirez à l'aise avec. N'ayez pas peur d'expérimenter et de essayer différentes choses. Bon codage, futurs experts Java !

Credits: Image by storyset