Médiaforma

All posts tagged collections

Les collections de type Set n’acceptent que des éléments différents (les doublons ne sont pas supportés). Si vous tentez d’ajouter un élément déjà présent dans une collection de type Set, une exception NullPointerException ou ClassCastException sera générée.

Plusieurs implémentations de collections de type Set existent : Hashset, Treeset et Linkedhashset. Voyons comment utiliser l’une d’entre elles.

Ici, nous définissons le HashSet unHashSet et nous lui ajoutons quelques objets. Remarquez l’objet Integer(15) qui est ajouté deux fois. L’iterator i est défini, puis la collection est parcourue avec une instruction while.

HashSet unHashSet=new HashSet();
unHashSet.add(new String("une chaîne"));
unHashSet.add(new Integer(15));
unHashSet.add(new Double(3.5));
unHashSet.add(new String("une autre chaîne"));
unHashSet.add(new Integer(15));
Iterator i=unHashSet.iterator();
while(i.hasNext()) {
  System.out.println(i.next());
}

 

Pour que ces instructions soient exécutables, vous devez importer trois bibliothèques :

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set

 

Voici le résultat. Remarquez que le deuxième objet Integer(15) n’est pas pris en compte :


Les collections de type Map sont constituées de couples clé/valeur. Chaque clé doit être unique. Pour ajouter des données dans une Hashtable, vous utiliserez la méthode put(). Pour lire les données dans une Hashtable, vous utiliserez la méthode get() en indiquant la clé correspondant à la valeur à retrouver.

Les collections de type Map peuvent être des HashTable ou des HashMap. Ces deux collections sont similaires, si ce n’est que les Hashmap acceptent une clé et une valeur null alors que les Hashtable ne les acceptent pas.

 

Ici par exemple, on définit la Hashtable alphabetGrec et on y stocke les douze premières lettres de l’alphabet Grec, référencées par les clés 1 à 12. Les douze valeurs sont ensuite retrouvées et affichées dans la console :

Hashtable alphabetGrec = new Hashtable() ;
alphabetGrec.put(new Integer(1),"Alpha");
alphabetGrec.put(new Integer(2),"Beta");
alphabetGrec.put(new Integer(3),"Gamma");
alphabetGrec.put(new Integer(4),"Delta");
alphabetGrec.put(new Integer(5),"Epsillon");
alphabetGrec.put(new Integer(6),"Zeta");
alphabetGrec.put(new Integer(7),"Eta");
alphabetGrec.put(new Integer(8),"Theta");
alphabetGrec.put(new Integer(9),"Iota");
alphabetGrec.put(new Integer(10),"Kappa");
alphabetGrec.put(new Integer(11),"Lambda");
alphabetGrec.put(new Integer(12),"Mu");

for(int i=1; i<=12; i++){
    System.out.println(alphabetGrec.get((Integer)i));
}

Pour que ces instructions soient exécutables, vous devez importer les bibliothèques java.util.Hashtable et java.util.Map :

import java.util.Hashtable;
import java.util.Map;

 

Voici le résultat :


Les tableaux consistent en des listes d’éléments. D’ici a penser que les tableaux sont des collections, il n’y a qu’un pas. Et pourtant, les tableaux ne sont pas des collections car ils n’implémentent pas l’interface Collection.

//Création d’un tableau de 100 entiers
int[] leTableau = new int[100];
//Stockage de la valeur 123 dans la première cellule du tableau leTableau
leTableau[0]=123;
//Affichage de la valeur contenue dans la première cellule du tableau leTableau System.out.println(leTableau[0]);

 

Tout comme les tableaux, les collections permettent de gérer des ensembles d’éléments. Java fournit plusieurs interfaces en relation avec les collections. Nous allons passer en revue les plus importantes.

 

Les collections de type List

Une liste est une collection ordonnée. Le premier élément a pour indice 0.

Les listes peuvent être de type LinkedList ou ArrayList.