Les tableaux associatifs, ou tables d'association,
(souvent appelés tables de hachage ou hachages par abus de langage, ou encore dictionnaires en Python)
sont des collections de couples (clé, valeur).
En Java, les clés et les valeurs sont typées (les clés et les valeurs pouvant être de même type ou de types différents).
Par abus de langage (encore !), on pourra dire qu'un tableau associatif est non typé
quand les clés et les valeurs sont de type
Il existe plusieurs implémentations qui mettent en œuvre des tableaux associatifs.
Nous décrivons ci-dessous la classe
Vous pourrez également regarder la classe
import java.util.HashMap;ou, si vous devez importer également les classes
import java.util.*;
HashMap<Object, Object> hMap = new HashMap<Object, Object>(); HashMap<String, Object> hMap2 = new HashMap<String, Object>(); HashMap<Token, Integer> hMap3 = new HashMap<Token, Integer>();Note : dans des versions antérieures de Java (avant les types génériques), on écrivait :
HashMap hMap = new HashMap();Cela correspondait à ce que l'on écrirait aujourd'hui :
HashMap<Object, Object> hMap = new HashMap<Object, Object>();
Integer nb = new Integer (18); String maChaine = "bonjour"; Token tok1 = new Token (); hMap.put (tok1, nb); hMap.put (maChaine, tok1); hMap2.put (maChaine, tok1); hMap3.put (tok1, nb);
String str = hMap2.get (tok1); Integer cpt = hMap3.get (tok1); // on sait (parce qu'on l'a déclaré) que les valeurs de hMap2 sont de type String // et celles de hMap3 de type Integer // mais : Object obj = hMap.get (nb); if (obj instanceof Token) do sth; // ou, si l'on est sûr que l'objet associé à nb est de type Token : Token t = (Token) hMap.get (nb); // transtypage
HashMap<String, Integer> freqWord = new HashMap<String, Integer>(); // ... Integer freq = freqTokenMap.get ("bonjour"); if (freq == null) freq = new Integer (1); else freq = new Integer (freq.intValue() + 1); freqWord.put (tok, freq);
IteratoritWords = freqWord.keySet().iterator(); while (itWords.hasNext()) { String currentWord = itWords.next(); Integer currentFreq = freqWord.get(currentWord); System.out.println("Mot: " + currentWord + " -> Fréq = " + String.valueOf(currentFreq)); }
La classe