Comparaison tableau / HashMap :
Comme le but d'un tableau ou d'une HashMap est à peu près le même (stocker des éléments de même type et pouvoir appliquer le même traitement à tous ces éléments), il n'est pas déraisonnable de les comparer.
- Une HashMap est plus puissante qu’un
tableaupour deux raisons :
- Elle est extensible alors que la taille d’un tableau est fixée dès sa création.
- L’accès aux éléments (appelés valeurs) peut se faire grâce à des clés de n’importe quel type, alors qu’on ne peut accéder aux éléments d’un tableau que par une clé entière (appelée indice).
Bien entendu, tout se paye : même si vous choisissiez une clé entière pour votre HashMap, elle prendrait beaucoup plus de place qu’un tableau contenant les mêmes valeurs.
- Déclaration+création :
TypeDesElements[] nomTableau = new TypeDesElements[nombreDeCases];
HashMap<TypeDesClés,TypeDesValeurs> nomHashMap = new HashMap<TypeDesClés,TypeDesValeurs>();
- Remplissage (écriture) :
nomTableau[n° de case] = valeur;
nomHashMap.put( clé, valeur );
- Accès (lecture) :
variable = nomTableau[n° de case];
variable = nomHashMap.get( clé );
- Parcours complet :
for ( int compteurEntier=0 ; compteurEntier < nomTableau.length ; compteurEntier++ )
System.out.println( nomTableau[compteurEntier] );
ou bien (plus simple)
for ( TypeDesElements variablePourUnElement : nomTableau )
System.out.println( variablePourUnElement );
Set<TypeDesClés> ensembleDesClés = nomHashMap.keySet();
for ( TypeDesValeurs variablePourUneValeur : ensembleDesClés )
System.out.println( variablePourUneValeur );
- Facilité d'utilisation :
Le tableau peut s'utiliser directement, alors que pour utiliser une HashMap, il faut une (voire deux) importation(s) :
import java.util.HashMap;
import java.util.Set;
Exemple d'utilisation des méthodes de HashMap (avec affichages) :
- Déclaration/initialisation : HashMap<String, Integer> vHM = null;
vHM : null - Création : vHM = new HashMap<String, Integer>();
vHM : {} - Ajout d'élément (donc d'une association) : vHM.put( "un", 1 );
vHM : {un=1} - Ajout d'élément (donc d'une association) : vHM.put( "deux", 2 );
vHM : {un=1, deux=2} - Ajout d'élément (donc d'une association) : vHM.put( "duo", 2 );
vHM : {un=1, deux=2, duo=2} - Ensemble des clés : vHM.keySet()
keySet : [un, deux, duo] - Liste des valeurs : vHM.values()
values : [1, 2, 2] - Valeur associée à une clé : vHM.get( "duo" )
get : 2 - Suppression d'un élément (donc d'une association) : vHM.remove( "trois" );
vHM : {un=1, deux=2, duo=2} - Suppression d'un élément (donc d'une association) : vHM.remove( "un" );
vHM : {deux=2, duo=2}