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

Java HashMap

Carte de hachage Java

Dans ce tutoriel, nous allons découvrir la classe Java HashMap et ses différentes opérations à l'aide d'exemples.

Le HashMap La classe du framework de collections Java fournit la fonctionnalité de la structure de données de la table de hachage.

Il stocke les éléments dans clé/valeur paires. Ici, les clés sont des identifiants uniques utilisés pour associer chaque valeur sur une carte.

Le HashMap classe implémente l'interface Map.

Créer une carte de hachage

Afin de créer une carte de hachage, nous devons importer le java.util.HashMap paquet d'abord. Une fois le package importé, voici comment créer des hashmaps en Java.

// hashMap creation with 8 capacity and 0.6 load factor
HashMap<K, V> numbers = new HashMap<>();

Dans le code ci-dessus, nous avons créé un hashmap nommé numbers . Ici, K représente le type de clé et V représente le type de valeurs. Par exemple,

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

Ici, le type de clés est String et le type de valeurs est Integer .

Exemple 1 :Créer un HashMap en Java

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // create a hashmap
    HashMap<String, Integer> languages = new HashMap<>();

    // add elements to 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}

Dans l'exemple ci-dessus, nous avons créé un HashMap langues nommées .

Ici, nous avons utilisé le put() méthode pour ajouter des éléments au hashmap. Nous en apprendrons plus sur le put() méthode plus loin dans ce didacticiel.

Opérations de base sur Java HashMap

Le HashMap La classe fournit diverses méthodes pour effectuer différentes opérations sur les hashmaps. Nous examinerons certaines opérations d'arraylist couramment utilisées dans ce didacticiel :

  • Ajouter des éléments
  • Éléments d'accès
  • Modifier des éléments
  • Supprimer des éléments

1. Ajouter des éléments à un HashMap

Pour ajouter un seul élément au hashmap, nous utilisons le put() méthode du HashMap classer. Par exemple,

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // create a hashmap
    HashMap<String, Integer> numbers = new HashMap<>();

    System.out.println("Initial HashMap: " + numbers);
    // put() method to add elements
    numbers.put("One", 1);
    numbers.put("Two", 2);
    numbers.put("Three", 3);
    System.out.println("HashMap after put(): " + numbers);
  }
}

Sortie

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

Dans l'exemple ci-dessus, nous avons créé un HashMap numéros nommés . Ici, nous avons utilisé le put() méthode pour ajouter des éléments aux nombres.

Remarquez la déclaration,

numbers.put("One", 1);

Ici, on passe le String valeur Un comme clé et Integer valeur 1 comme valeur du put() méthode.

Lectures recommandées

  • Java HashMap put()
  • Java HashMap putAll()
  • Java HashMap putIfAbsent()

2. Accéder aux éléments HashMap

Nous pouvons utiliser le get() méthode pour accéder à la valeur du hashmap. Par exemple,

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);

    // get() method to get value
    String value = languages.get(1);
    System.out.println("Value at index 1: " + value);
  }
}

Sortie

HashMap: {1=Java, 2=Python, 3=JavaScript}
Value at index 1: Java

Dans l'exemple ci-dessus, notez l'expression,

languages.get(1);

Ici, le get() la méthode prend la clé comme argument et renvoie la valeur correspondante associé à la clé.

Nous pouvons également accéder aux clés , valeurs , et clé/valeur paires de hashmap en tant que vues définies à l'aide de keySet() , values() , et entrySet() méthodes respectivement. Par exemple,

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);

    // return set view of keys
    // using keySet()
    System.out.println("Keys: " + languages.keySet());

    // return set view of values
    // using values()
    System.out.println("Values: " + languages.values());

    // return set view of key/value pairs
    // using entrySet()
    System.out.println("Key/Value mappings: " + languages.entrySet());
  }
}

Sortie

HashMap: {1=Java, 2=Python, 3=JavaScript}
Keys: [1, 2, 3]
Values: [Java, Python, JavaScript]
Key/Value mappings: [1=Java, 2=Python, 3=JavaScript]

Dans l'exemple ci-dessus, nous avons créé un hashmap nommé langues . Ici, nous accédons aux clés , valeurs , et clé/valeur mappages à partir du hashmap.

Lectures recommandées

  • HashMap Java get()
  • Hashmap Java getOrDefault()
  • Ensemble de clés Java HashMap()
  • Valeurs Java HashMap()
  • Java HashMap entrySet()

3. Modifier la valeur de la carte de hachage

Nous pouvons utiliser le replace() méthode pour changer la valeur associée à une clé dans un hashmap. Par exemple,

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("Original HashMap: " + languages);

    // change element with key 2
    languages.replace(2, "C++");
    System.out.println("HashMap using replace(): " + languages);
  }
}

Sortie

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

Dans l'exemple ci-dessus, nous avons créé un hashmap nommé langues . Remarquez l'expression,

languages.replace(2, "C++");

Ici, nous modifions la valeur référencée par la clé 2 avec la nouvelle valeur C++ .

Le HashMap la classe fournit également quelques variantes du replace() méthode. Pour en savoir plus, visitez

  • Java HashMap remplace()
  • Java HashMap replaceAll()

4. Supprimer les éléments HashMap

Pour supprimer des éléments d'un hashmap, nous pouvons utiliser la méthode remove(). Par exemple,

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);

    // remove element associated with key 2
    String value = languages.remove(2);
    System.out.println("Removed value: " + value);

    System.out.println("Updated HashMap: " + languages);
  }
}

Sortie

HashMap: {1=Java, 2=Python, 3=JavaScript}
Removed value: Python
Updated HashMap: {1=Java, 3=JavaScript}

Ici, le remove() la méthode prend la clé comme paramètre. Il renvoie ensuite la valeur associé à la clé et supprime l'entrée .

Nous pouvons également supprimer l'entrée uniquement sous certaines conditions. Par exemple,

remove(2, "C++");

Ici, le remove() la méthode supprime uniquement l'entrée si la touche 2 est associé à la valeur C++ . Depuis 2 n'est pas associé à C++ , cela ne supprime pas l'entrée.

Pour en savoir plus, visitez Java HashMap remove().

Autres méthodes de HashMap

Méthode Description
effacer() supprime tous les mappages du HashMap
calculer() calcule une nouvelle valeur pour la clé spécifiée
computeIfAbsent() calcule la valeur si un mappage pour la clé n'est pas présent
computeIfPresent() calcule une valeur pour le mappage si la clé est présente
merge() fusionne le mappage spécifié avec le HashMap
cloner() fait la copie du HashMap
containsKey() vérifie si la clé spécifiée est présente dans Hashmap
containsValue() vérifie si Hashmap contient la valeur spécifiée
taille() renvoie le nombre d'éléments dans HashMap
isEmpty() vérifie si le Hashmap est vide

Itérer dans un HashMap

Pour parcourir chaque entrée du hashmap, nous pouvons utiliser la boucle Java for-each. Nous pouvons parcourir les clés uniquement , valles uniquement , et mappage clé/valeur . Par exemple,

import java.util.HashMap;
import java.util.Map.Entry;

class Main {
  public static void main(String[] args) {

    // create a HashMap
    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // iterate through keys only
    System.out.print("Keys: ");
    for (Integer key : languages.keySet()) {
      System.out.print(key);
      System.out.print(", ");
    }

    // iterate through values only
    System.out.print("\nValues: ");
    for (String value : languages.values()) {
      System.out.print(value);
      System.out.print(", ");
    }
    
    // iterate through key/value entries
    System.out.print("\nEntries: ");
    for (Entry<Integer, String> entry : languages.entrySet()) {
      System.out.print(entry);
      System.out.print(", ");
    }
  }
}

Sortie

HashMap: {1=Java, 2=Python, 3=JavaScript}
Keys: 1, 2, 3,
Values: Java, Python, JavaScript,        
Entries: 1=Java, 2=Python, 3=JavaScript,

Notez que nous avons utilisé le Map.Entry dans l'exemple ci-dessus. C'est la classe imbriquée du Map interface qui renvoie une vue (éléments) de la carte.

Nous devons d'abord importer le java.util.Map.Entry package afin d'utiliser cette classe.

Cette classe imbriquée renvoie une vue (éléments) de la carte.

Création de HashMap à partir d'autres cartes

En Java, nous pouvons également créer un hashmap à partir d'autres cartes. Par exemple,

import java.util.HashMap;
import java.util.TreeMap;

class Main {
  public static void main(String[] args) {

    // create a treemap
    TreeMap<String, Integer> evenNumbers = new TreeMap<>();
    evenNumbers.put("Two", 2);
    evenNumbers.put("Four", 4);
    System.out.println("TreeMap: " + evenNumbers);

    // create hashmap from the treemap
    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}

Dans l'exemple ci-dessus, nous avons créé un TreeMap nommé evenNumbers . Remarquez l'expression,

numbers = new HashMap<>(evenNumbers)

Ici, nous créons un HashMap numéros nommés en utilisant le TreeMap . Pour en savoir plus sur le treemap, visitez Java TreeMap.

Remarque  :lors de la création d'un hashmap, nous pouvons inclure des paramètres facultatifs :capacity et facteur de charge . Par exemple,

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

Ici,

  • 8 (la capacité est de 8) - Cela signifie qu'il peut stocker 8 entrées.
  • 0.6f (le facteur de charge est de 0,6) - Cela signifie que chaque fois que notre table de hachage est remplie à 60 %, les entrées sont déplacées vers une nouvelle table de hachage deux fois plus grande que la table de hachage d'origine.

Si les paramètres facultatifs ne sont pas utilisés, la capacité par défaut aura 16 et le facteur de charge par défaut sera 0,75 .


Java

  1. Opérateurs Java
  2. Commentaires Java
  3. Java pour chaque boucle
  4. Chaînes Java
  5. InterfaceJava
  6. Classe anonyme Java
  7. Java essayer avec des ressources
  8. Annotations Java
  9. Assertions Java