La classe java.util.TreeMap

TreeMap est une représentation de données(clé, valeur) hiérarchique sous forme d'arbre binaire. Les couples de cette classe sont triés par clé dans l'ordre croissant.

Comme la classe HashMap, la classe TreeMap implémente l'interface java.util.Map. La différence principale entre HashMap et TreeMap est que HashMap est une collection non ordonnée alors que TreeMap est ordonnée par défaut dans l'ordre croissant selon ses clés. TreeMap est une collection non synchronisée, ce qui veut dire qu'elle n'est pas protégée contre les accès simultanés.

Exemple de TreeMap

Exemple 1 :

Dans cet exemple, les clés et les valeurs sont stockés dans une TreeMap. Pour imprimer les éléments, il faut créer un objet Iterator puis faire le parcours avec la boucle while.

import java.util.TreeMap;
import java.util.Set;
import java.util.Iterator;
import java.util.Map;

public class parcours_treemap {

public static void main(String args[]) {

/* declaration de TreeMap */
TreeMap tm = new TreeMap();

/*Ajouter des éléments à TreeMap*/
tm.put(12, "val1");
tm.put(5, "val2");
tm.put(8, "val3");
tm.put(2, "val4");

/* Afficher le contenu en utilisant Iterator */
Set set = tm.entrySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()) {
Map.Entry mapentry = (Map.Entry)iterator.next();
System.out.print("clé: "+ mapentry.getKey() + " +
"- valeur: "+mapentry.getValue()+"\n");
}

}
}
L'exécution de ce code retourne ce résultat:

clé: 2 - valeur: val4
clé: 5 - valeur: val2
clé: 8 - valeur: val3
clé: 12 - valeur: val1
On voit bien que les couples<clé, valeur> sont bien triés dans l'ordre croissant selon les clés.

Exemple 2 :

Pour construire une TreeMap à partir d'une autre, on peut invoquer la méthode putAll(Map) qui va restructurer l'arbre au fur et à mesure des ajouts.

import java.util.TreeMap;

public class parcours {

public static void main(String args[]) {

/* declaration de TreeMap */
TreeMap tm = new TreeMap();

/*Ajouter des éléments à TreeMap*/
tm.put(12, "val1");
tm.put(5, "val2");
tm.put(8, "val3");
tm.put(2, "val4");

TreeMap tm2 = new TreeMap();
tm2.putAll(tm);

/*afficher quelques couples juste pour vérifier */
System.out.print("clé: 12" + " - valeur: "+tm2.get(12)+"\n");
System.out.print("clé: 8" + " - valeur: "+tm2.get(8)+"\n");

/*première et dernière clé*/
System.out.print("première clé : "+tm2.firstKey()+" dernière clé : "+tm2.lastKey());
}
}
L'exécution de ce code donne en sortie ce résultat:

clé: 12 - valeur: val1
clé: 8 - valeur: val3
première clé : 2 dernière clé : 12
Références:
Documentation TreeMap
upmf-grenoble:TreeMap