NavigableSet
est une extension de
SortedSet
, introduite en Java 6. La classe d'implémentation fournie en standard est la même que pour
SortedSet
: il s'agit de
TreeSet
. Elle ne modifie pas la sémantique définie pour
SortedSet
, mais ajoute des méthodes et des fonctionnalités.
SortedSet
.
iterator()
et
descendingIterator()
: retournent deux itérateurs, qui permettent de balayer les objets de cet ensemble dans l'ordre croissant et décroissant, respectivement.
ceiling(T t)
et
floor(T t)
: retournent le plus petit élément égal ou plus grand que l'élément passé en paramètre, et le plus grand élément égal ou plus petit que celui passé en paramètre, respectivement.
higher(T t)
et
lower(T t)
: retournent le plus petit élément strictement plus grand que l'élément passé en paramètre, et le plus grand élément strictement plus petit que celui passé en paramètre, respectivement.
headSet(T sup, boolean inclusive)
et
tailSet(T inf, boolean inclusive)
: retournent un
NavigableSet
contenant les éléments plus petits (respectivement plus grands) que l'élément passé en paramètre, inclus ou non, suivant la valeur du booléen
inclusive
. Encore une fois, ce sous-ensemble est une vue de l'ensemble maître.
subSet(T inf, boolean infInclusive ,T sup, boolean supInclusive)
: retourne un
NavigableSet
contenant les éléments plus grands que
inf
et plus petits que
sup
. L'inclusion ou non des bornes est précisée par les deux booléens passés en paramètre.
pollFirst()
et
pollLast()
retirent de l'ensemble sa plus petite valeur, ou sa plus grande respectivement, et la retournent.
Marin
de la partie précédente. L'ensemble est initialisé avec la même classe anonyme
Comparator
.
Exemple 12. Utilisation de
NavigableSet
// dans une méthode main NavigableSet<Marin> set = new TreeSet<Marin>(/* ici notre objet Comparator */) ; // initialisation de l'ensemble Marin m1 = new Marin("Surcouf", "Alain") ; Marin m2 = new Marin("Tabarly", "Eric") ; Marin m3 = new Marin("Auguin", "Christophe") ; Marin m4 = new Marin("Surcouf", "Robert") ; set.add(m1) ; set.add(m2) ; set.add(m3) ; set.add(m3) ; set.add(m4) ; // vérificationd de son contenu for (Marin m : set) { System.out.println(m) ; } // création d'un sous-ensemble NavigableSet<Marin> head = set.headSet(m1, true) ; System.out.println("Sous-ensemble head : " + head.size()) ; // on retire le plus petit élément de l'ensemble maître set.pollFirst() ; // on constate que le sous-ensemble voit cet effacement System.out.println("Sous-ensemble head : " + head.size()) ; // on efface le sous-ensemble head.clear() ; // on constate que l'ensemble maître voir cet effacement System.out.println("Ensemble set : " + set.size()) ;
Auguin Christophe Surcouf Alain Surcouf Robert Tabarly Eric Sous-ensemble head : 2 Sous-ensemble head : 1 Ensemble set : 2