L'interface Set en Java

L'interface java.util.set est un sous type de l'interface java.util.Collections . Il représente un ensemble d'objets dont chacun est peut seulement exister une seule fois. L'interface set contient seulement les méthodes héritées de Collections.

Implémentations de Set

La plateforme Java comporte 3 implémentations de Set. Vous pouvez choisir l'une des Collections d'objets suivante:
  • java.util.HashSet
  • java.util.TreeSet
  • java.util.LinkedHashSet
Chacune de ces implémentations stocke les éléments dans une table de hachage, qui est la meilleur implémentation, mais elle est différente lorsque il s'agit du parcourt du Set et l'ordre des éléments, et le temps d’accès et modifications dans ces listes. Les instances de Set sont comparables malgré leurs différences, deux implémentations sont égaux s'ils contiennent les mêmes éléments.

HashSet est retournée par une HashMap. Il n' y a aucune garantie que la séquence soit respectée lors du parcours.

TreeSet ordonnes les éléments selon les valeurs et non pas avec les clés qui est un peu lente que HashTable.

LinkedList ordonnes les éléments basé sur l'ordre lors de l'insertion.

Voici quelques exemples de la création de l'interface Set:

Set hset = new HashSet();
Set tset = new TreeSet();
Set lset = new LinkedHashSet();

Méthodes basics de l'interface Set

1)void add(Object o)
Ajoute un élément à la collection. Cette méthode est héritée de l'interface Collection.


Set hset = new HashSet();
hset.add(new String("1"));
hset.add(new String("2"));
2)boolean remove(Object o)
Supprime l'élément spécifique de la collection. S'il existe, elle retourne un booléen true.

hset.remove("1");
3)Iterator iterator()
Retourne un iterator sur Set.

Set hset = new HashSet();
Iterator iterator = hset.iterator();
while(iterator.hasNext(){
String element = (String) iterator.next();
}
4)Int size()
Retourne le nombre des éléments dans l'ensemble Set.

System.out.println(hset.size());

Déclaration générique de Set

Les objets peuvent être ajoutés par défaut dans l'ensemble Set mais il est possible de limiter le type d'objet que vous voulez insérer dans Set:

Set<String> set = new HashSet<String>();
Cette déclaration accepte seulement les objets de type String. L'avantage est de pouvoir utiliser ensuite et accéder directement à Set sans faire le cast:

for(String Object : set){
//faire quelque chose
}
Références:
Java Collection : Set
Javadoc: The Set Interface