Maîtriser l'interface NavigableSet de Java : Navigation, tri et exemples pratiques
Maîtriser l'interface NavigableSet de Java : Navigation, tri et exemples pratiques
L'interface NavigableSet du framework Java Collections fournit les fonctionnalités pour naviguer parmi les éléments d'un ensemble. Elle est considérée comme un type de SortedSet.
Classe implémentant NavigableSet
Pour utiliser les fonctionnalités de l'interface NavigableSet, nous devons utiliser la classe TreeSet qui implémente NavigableSet.
Comment utiliser NavigableSet
En Java, nous devons importer le package java.util.NavigableSet pour utiliser NavigableSet. Une fois le package importé, voici comment créer des ensembles navigables :
// Implémentation SortedSet par la classe TreeSet
NavigableSet<String> nombres = new TreeSet<>();
Ici, nous avons créé un ensemble navigable nommé nombres de la classe TreeSet.
Méthodes de NavigableSet
NavigableSet est considéré comme un type de SortedSet car il étend l'interface SortedSet. Par conséquent, toutes les méthodes de SortedSet sont également disponibles dans NavigableSet.
Cependant, certaines méthodes de SortedSet (headSet(), tailSet() et subSet()) sont définies différemment dans NavigableSet. Voyons comment ces méthodes sont définies.
headSet(element, booleanValue)
La méthode headSet() renvoie tous les éléments d'un ensemble navigable avant l'element spécifié (passé en argument). Le paramètre booleanValue est optionnel, sa valeur par défaut est false. Si true est passé, la méthode renvoie tous les éléments avant l'élément spécifié y compris cet élément.
tailSet(element, booleanValue)
La méthode tailSet() renvoie tous les éléments d'un ensemble navigable après l'element spécifié y compris cet élément. Le paramètre booleanValue est optionnel, sa valeur par défaut est true. Si false est passé, la méthode renvoie tous les éléments après l'élément spécifié sans l'inclure.
subSet(e1, bv1, e2, bv2)
La méthode subSet() renvoie tous les éléments entre e1 et e2 y compris e1. Les paramètres bv1 et bv2 sont optionnels. La valeur par défaut de bv1 est true, celle de bv2 est false. Si false est passé comme bv1, la méthode renvoie les éléments entre e1 et e2 sans inclure e1. Si true est passé comme bv2, la méthode renvoie les éléments entre e1 et e2 y compris e2.
Méthodes de navigation
NavigableSet fournit diverses méthodes pour naviguer sur ses éléments :
- descendingSet() – inverse l'ordre des éléments
- descendingIterator() – renvoie un itérateur pour parcourir l'ensemble en ordre inverse
- ceiling() – renvoie le plus petit élément parmi ceux supérieurs ou égaux à l'élément spécifié
- floor() – renvoie le plus grand élément parmi ceux inférieurs ou égaux à l'élément spécifié
- higher() – renvoie le plus petit élément parmi ceux strictement supérieurs à l'élément spécifié
- lower() – renvoie le plus grand élément parmi ceux strictement inférieurs à l'élément spécifié
- pollFirst() – renvoie et supprime le premier élément
- pollLast() – renvoie et supprime le dernier élément
Pour en savoir plus, consultez la documentation officielle Java NavigableSet.
Implémentation de NavigableSet dans la classe TreeSet
import java.util.NavigableSet;
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
// Création d'un NavigableSet avec TreeSet
NavigableSet<Integer> nombres = new TreeSet<>();
// Insertion d'éléments
nombres.add(1);
nombres.add(2);
nombres.add(3);
System.out.println("NavigableSet : " + nombres);
// Accès au premier et dernier élément
int premierElement = nombres.first();
System.out.println("Premier nombre : " + premierElement);
int dernierElement = nombres.last();
System.out.println("Dernier élément : " + dernierElement);
// Suppression du premier et dernier élément
int nombre1 = nombres.pollFirst();
System.out.println("Premier élément supprimé : " + nombre1);
int nombre2 = nombres.pollLast();
System.out.println("Dernier élément supprimé : " + nombre2);
}
}
Sortie
NavigableSet : [1, 2, 3] Premier nombre : 1 Dernier élément : 3 Premier élément supprimé : 1 Dernier élément supprimé : 3
Pour en savoir plus sur TreeSet, consultez la documentation Java TreeSet.
Java
- Maîtriser les interfaces C# : Définition, implémentation et cas d'utilisation pratiques
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Commentaires Java : Types, utilisation et bonnes pratiques
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques
- Maîtriser les expressions lambda Java : Des bases à l'API Stream
- Interface vs Classe Abstraite en Java : Comment Choisir la Bonne Abstraction
- Comprendre les interfaces Java : Définitions, Usages et Bonnes pratiques