Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Java

Maîtriser Java HashMap : Opérations, Exemples et Bonnes Pratiques

Maîtriser Java HashMap

Explorez la classe Java HashMap – ses fonctionnalités principales, opérations courantes et exemples pratiques – pour l'utiliser en confiance dans des applications réelles.

La classe HashMap, partie du framework de collections Java, implémente une table de hachage stockant les données en paires clé/valeur. Chaque clé est unique et agit comme identifiant pour sa valeur associée. La classe implémente l'interface Map, fournissant une API versatile pour manipuler les données.


Création d'un HashMap

Commencez par importer le package java.util.HashMap :

import java.util.HashMap;

Puis instanciez la map. Vous pouvez spécifier un type de clé générique K et un type de valeur V, ou compter sur l'inférence de type :

HashMap<K, V> numbers = new HashMap<>();

Exemple avec types concrets :

HashMap<String, Integer> numbers = new HashMap<>();

Exemple 1 : Création Basique d'un HashMap

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> languages = new HashMap<>();
        languages.put("Java", 8);
        languages.put("JavaScript", 1);
        languages.put("Python", 3);
        System.out.println("HashMap: " + languages);
    }
}

Sortie

HashMap: {Java=8, JavaScript=1, Python=3}

Opérations Principales sur HashMap

La classe HashMap offre un riche ensemble de méthodes. Voici les plus fréquemment utilisées :


1. Ajout d'Éléments

Utilisez put() pour insérer une paire clé/valeur. Si la clé existe déjà, la valeur est remplacée.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> numbers = new HashMap<>();
        System.out.println("HashMap Initial: " + numbers);
        numbers.put("One", 1);
        numbers.put("Two", 2);
        numbers.put("Three", 3);
        System.out.println("HashMap après put(): " + numbers);
    }
}

Sortie

HashMap Initial: {} HashMap après put(): {One=1, Two=2, Three=3}

Clé : String, Valeur : Integer dans cet exemple.


2. Accès aux Éléments

Récupérez une valeur avec get(key). La méthode retourne null si la clé est absente.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        String value = languages.get(1);
        System.out.println("Valeur à la clé 1: " + value);
    }
}

Sortie

HashMap: {1=Java, 2=Python, 3=JavaScript} Valeur à la clé 1: Java

Vous pouvez aussi obtenir l'ensemble complet des clés, la collection des valeurs ou l'ensemble des entrées via keySet(), values() et entrySet() :

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        System.out.println("Clés: " + languages.keySet());
        System.out.println("Valeurs: " + languages.values());
        System.out.println("Entrées: " + languages.entrySet());
    }
}

Sortie

HashMap: {1=Java, 2=Python, 3=JavaScript} Clés: [1, 2, 3] Valeurs: [Java, Python, JavaScript] Entrées: [1=Java, 2=Python, 3=JavaScript]

3. Mise à Jour des Valeurs

La méthode replace(key, newValue) échange la valeur existante pour la clé donnée. Elle retourne l'ancienne valeur ou null si la clé était absente.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap Original: " + languages);
        languages.replace(2, "C++");
        System.out.println("Après replace(): " + languages);
    }
}

Sortie

HashMap Original: {1=Java, 2=Python, 3=JavaScript} Après replace(): {1=Java, 2=C++, 3=JavaScript}

4. Suppression d'Éléments

Supprimez un mapping avec remove(key), qui retourne la valeur supprimée. Pour une suppression conditionnelle, utilisez remove(key, value), qui ne supprime que si le mapping courant correspond à la valeur spécifiée.

import java.util.HashMap;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        String removed = languages.remove(2);
        System.out.println("Valeur supprimée: " + removed);
        System.out.println("HashMap Mis à Jour: " + languages);
    }
}

Sortie

HashMap: {1=Java, 2=Python, 3=JavaScript} Valeur supprimée: Python HashMap Mis à Jour: {1=Java, 3=JavaScript}

Méthodes Supplémentaires de HashMap

MéthodeDescription
clear()Supprime tous les mappings
compute()Calcule une nouvelle valeur pour une clé
computeIfAbsent()Calcule une valeur seulement si la clé est manquante
computeIfPresent()Calcule une valeur seulement si la clé existe
merge()Fusionne un nouveau mapping avec un existant
clone()Crée une copie superficielle
containsKey()Vérifie une clé spécifique
containsValue()Vérifie une valeur spécifique
size()Nombre de paires clé/valeur
isEmpty()Si la map est vide

Itération sur un HashMap

Utilisez une boucle for-each pour parcourir les clés, valeurs ou entrées. Importez java.util.Map.Entry pour l'itération sur les entrées.

import java.util.HashMap;
import java.util.Map.Entry;
class Main {
    public static void main(String[] args) {
        HashMap<Integer, String> languages = new HashMap<>();
        languages.put(1, "Java");
        languages.put(2, "Python");
        languages.put(3, "JavaScript");
        System.out.println("HashMap: " + languages);
        System.out.print("Clés: ");
        for (Integer key : languages.keySet()) {
            System.out.print(key + ", ");
        }
        System.out.print("\nValeurs: ");
        for (String value : languages.values()) {
            System.out.print(value + ", ");
        }
        System.out.print("\nEntrées: ");
        for (Entry<Integer, String> entry : languages.entrySet()) {
            System.out.print(entry + ", ");
        }
    }
}

Sortie

HashMap: {1=Java, 2=Python, 3=JavaScript} Clés: 1, 2, 3, Valeurs: Java, Python, JavaScript, Entrées: 1=Java, 2=Python, 3=JavaScript,

Création d'un HashMap depuis une Autre Map

Instanciez un HashMap avec le contenu d'une map existante :

import java.util.HashMap;
import java.util.TreeMap;
class Main {
    public static void main(String[] args) {
        TreeMap<String, Integer> evenNumbers = new TreeMap<>();
        evenNumbers.put("Two", 2);
        evenNumbers.put("Four", 4);
        System.out.println("TreeMap: " + evenNumbers);
        HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
        numbers.put("Three", 3);
        System.out.println("HashMap: " + numbers);
    }
}

Sortie

TreeMap: {Four=4, Two=2} HashMap: {Two=2, Three=3, Four=4}

Les paramètres optionnels du constructeur permettent de définir la capacité initiale et le facteur de charge :

HashMap<K, V> numbers = new HashMap<>(8, 0.6f);

Les valeurs par défaut sont capacity = 16 et load factor = 0.75.

Pour des analyses plus approfondies, consultez la documentation officielle Java ou des ressources autoritatives comme "Effective Java" de Joshua Bloch.

Java

  1. Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
  2. Commentaires Java : Types, utilisation et bonnes pratiques
  3. Maîtriser la boucle for améliorée en Java : Syntaxe, exemples et bonnes pratiques
  4. Maîtriser les chaînes de caractères en Java : Création, méthodes et bonnes pratiques
  5. Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
  6. Maîtriser les classes internes anonymes en Java : définition, syntaxe et exemples pratiques
  7. Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
  8. Annotations Java expliquées : types, placement et exemples pratiques
  9. Assertions Java : guide pratique pour détecter les bugs et assurer la fiabilité du code