Skip to content

Map

HashMap<K, V>: dictionnaire personnel

Permet de stocker des valeurs par clé/valeur.

En premier argument, le type de la clé, en second, le type de la valeur.

Les clés sont unique, si on tente d’ajouter une nouvelle valeur pour une clé existante, l’ancienne valeur sera écrasée.

import java.util.HashMap;

HashMap<String, String> phonebook = new HashMap<String, String>();

HashMap<String, Integer> grades = new HashMap<String, Integer>();  // nom → note
HashMap<Integer, String> users = new HashMap<Integer, String>();   // id → nom
HashMap<String, Boolean> flags = new HashMap<String, Boolean>();   // clé  valeur booléenne

put(key, value): ajouter une paire

phonebook.put("Alice", "+380501112233");
phonebook.put("Bob", "+380671234567");

get(key): obtenir une valeur

Si la clé n’existe pas, la méthode retourne null

System.out.println(phonebook.get("Alice"));

containsKey(key): vérifier la présence

Retourne truesi la clé est présente.

// si la clé est présente on affiche, sinon on ajoute la valeur
if (phonebook.containsKey("Alice"))
{
    System.out.println("Alice a déjà un numéro!");
}
else
{
    phonebook.put("Alice", "+10111111111");
}

remove(key): supprime une entrée

phonebook.remove("Bob");
System.out.println(phonebook.get("Bob"));

entrySet(): Parcourir le map

for (var entry : phonebook.entrySet()) {
    System.out.println(entry.getKey() + " -> " + entry.getValue()); //Alice -> +10501112233
}

Compatage de mots

On veux compter le nombre d’occurence des mots dans un texte.

String text = "java java core java";
HashMap<String, Integer> freq = new HashMap<String, Integer>();

// parcours la string et explose en se basant sur l'espace comme séparateur 
for (String w : text.split(" "))
{
    // on récupère chaque valeur du hashMap 
    Integer old = freq.get(w);
    // si déjà trouvé, on incrémente la valeur du mot 
    freq.put(w, (old == null) ? 1 : old + 1);
}

System.out.println(freq); //{core=1, java=3}

Application: annuaire téléphonique

import java.util.HashMap;
import java.util.Scanner;

public class PhonebookApp {
    public static void main(String[] args)
    {
        HashMap<String, String> phonebook = new HashMap<String, String>();
        Scanner console = new Scanner(System.in);

        while (true)
        {
            System.out.print("Saisissez un nom (ou une ligne vide pour quitter): ");
            String name = console.nextLine();
            if (name.isEmpty()) break;

            System.out.print("Saisissez le numéro: ");
            String phone = console.nextLine();

            phonebook.put(name, phone);
        }

        System.out.println("Annuaire téléphonique:");
        for (var entry : phonebook.entrySet())
        {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }
}