În Java NavigableSet este un subtip al SortedSet interfata. Ne permite să efectuăm diverse operații, cum ar fi obținerea celor mai apropiate potriviri pentru un anumit element, o iterație în ordine descrescătoare și altele. Oferă metode de navigare prin elementele din set.
De exemplu Interfața NavigableSet ne permite să navigăm prin set în ordine crescătoare și descrescătoare, spre deosebire de SortedSet, care acceptă doar ordinea crescătoare. Clasele care implementează interfața NavigableSet sunt TreeSet şi ConcurrentSkipListSet
- NavigableSet extinde SortedSet și oferă astfel metode precum first() last() headSet() tailSet() etc.
- Vă permite să navigați în ambele direcții, în ordine ascendentă și descendentă
- Cea mai comună implementare a NavigableSet este TreeSet.
Exemplu: Acest exemplu demonstrează crearea unui NavigableSet folosind TreeSet și adăugarea de elemente la acesta care le sortează automat în ordine crescătoare.
Java
// Java program to demonstrates // the working of NavigableSet import java.util.*; public class Geeks { public static void main(String[] args) { NavigableSet<Integer> ns = new TreeSet<>(); // Add elements to the set ns.add(10); ns.add(20); ns.add(30); ns.add(40); ns.add(50); System.out.println('Navigable Set: ' + ns); } }
Ieșire
Navigable Set: [10 20 30 40 50]
Diagrama de mai jos demonstrează structura moștenirii în cadrul de colecție Java legat de seturi.
dfs vs bfs
TreeSet este o clasă care implementează NavigableSet care la rândul său se extinde SortedSet care se extinde Set .
Declarația NavigableSet
În Java, declarația NavigableSet poate fi declarată ca:
NavigableSet
setName;
Notă: ' Type' este tipul de element din set (de exemplu, șir întreg etc.), iar setName este numele variabilei.
Crearea obiectelor NavigableSet
Nu putem crea direct un NavigableSet deoarece este o interfață. În schimb folosim o clasă ca TreeSet care o implementeaza. Cu ajutorul genericelor putem defini tipul de obiecte pe care setul le va stoca. Acest set de tip sigur poate fi definit ca:
NavigableSet
set = nou TreeSet ();
Exemplu: Acest exemplu demonstrează cum să utilizați diferite metode ale NavigableSet, cum ar fi descedingSet() tailSet() lower() pollFirst() și pollLast() pentru a manipula și naviga într-un set sortat atât în ordine normală, cât și inversă.
Java// Java Program to demostrates the // working of various methods of NavigableSet import java.util.NavigableSet; import java.util.TreeSet; public class Geeks { public static void main(String[] args) { NavigableSet<Integer> ns = new TreeSet<>(); ns.add(0); ns.add(1); ns.add(2); ns.add(3); ns.add(4); ns.add(5); ns.add(6); // Get a reverse view of the navigable set NavigableSet<Integer> revNs = ns.descendingSet(); // Print the normal and reverse views System.out.println('Normal order: ' + ns); System.out.println('Reverse order: ' + revNs); NavigableSet<Integer> t = ns.tailSet(3 true); System.out.println('3 or more: ' + t); System.out.println('lower(3): ' + ns.lower(3)); System.out.println('floor(3): ' + ns.floor(3)); System.out.println('higher(3): ' + ns.higher(3)); System.out.println('ceiling(3): ' + ns.ceiling(3)); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollLast(): ' + ns.pollLast()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('Navigable Set: ' + ns); System.out.println('pollFirst(): ' + ns.pollFirst()); System.out.println('pollLast(): ' + ns.pollLast()); } }
Ieșire:
Efectuarea diferitelor operații pe NavigableSet
1. Adăugarea de elemente: Putem folosi adăuga() metoda de inserare a elementelor în NavigableSet. Elementele sunt stocate în ordinea sortării, nu sunt permise duplicate, iar valorile nule nu sunt, de asemenea, acceptate de NavigableSet.
Exemplu: Acest exemplu demonstrează adăugarea de elemente la un NavigableSet folosind add() unde duplicatele sunt ignorate și elementele sunt sortate în ordine crescătoare.
Java// Java Program to demonstrates the working of add() import java.util.*; import java.io.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('A'); ts.add('B'); ts.add('C'); ts.add('A'); System.out.println('NavigableSet: ' + ts); } }
Ieșire
NavigableSet: [A B C]
2. Elemente de acces: După adăugarea elementelor, dacă dorim să accesăm elementele, putem folosi metode încorporate precum conține() primul() dura() etc.
Exemplu: Acest exemplu demonstrează adăugarea de elemente la un NavigableSet, verificând existența unui element și regăsind primul și ultimul element.
Java// Java program to demonstrates the // working of contains() first() and last() method import java.util.*; import java.io.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('A'); ts.add('B'); ts.add('C'); ts.add('A'); System.out.println('NavigableSet: ' + ts); String s = 'D'; // Check if the above string exists in // the NavigableSet or not System.out.println('D exists in the NavigableSet?: ' + ts.contains(s)); // Print the first element in // the NavigableSet System.out.println('First Element of NavigableSet: ' + ts.first()); // Print the last element in // the NavigableSet System.out.println('Last Element of NavigableSet: ' + ts.last()); } }
Ieșire
NavigableSet: [A B C] D exists in the NavigableSet?: false First Element of NavigableSet: A Last Element of NavigableSet: C
3. Îndepărtarea elementelor: Valorile pot fi eliminate din NavigableSet folosind elimina() pollFirst() sondajLast() .
Exemplu: Acest exemplu demonstrează eliminarea elementelor din NavigableSet.
Java// Java Program to demonstrates the working of remove() // pollFirst() and pollLast() method import java.io.*; import java.util.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('A'); ts.add('B'); ts.add('C'); ts.add('B'); ts.add('D'); ts.add('E'); System.out.println('NavigableSet: ' + ts); // Removing the element b ts.remove('B'); System.out.println('After removing element ' + ts); // Remove the First element of TreeSet ts.pollFirst(); System.out.println( 'After the removal of First Element ' + ts); // Remove the Last element of TreeSet ts.pollLast(); System.out.println( 'After the removal of Last Element ' + ts); } }
Ieșire
NavigableSet: [A B C D E] After removing element [A C D E] After the removal of First Element [C D E] After the removal of Last Element [C D]
4. Elemente repetate: Există diferite moduri de a itera prin NavigableSet. Cel mai faimos este folosirea îmbunătățită pentru buclă.
Exemplu: Acest exemplu demonstrează adăugarea de elemente la un NavigableSet și iterarea acestuia în ordine crescătoare.
Java// Java Program to iterate through NavigableSet import java.util.*; import java.io.*; class Geeks { public static void main(String[] args) { NavigableSet<String> ts = new TreeSet<String>(); // Elements are added using add() method ts.add('C'); ts.add('D'); ts.add('E'); ts.add('A'); ts.add('B'); ts.add('Z'); // Iterating though the NavigableSet for (String i : ts) System.out.print(i + ' '); } }
Ieșire
A B C D E Z
Metode
Următoarele sunt metodele prezente în interfața NavigableSet.
Metode | Descriere |
|---|---|
| plafon (E e) | Returnează cel mai mic element din acest set mai mare sau egal cu elementul dat sau nul dacă nu există un astfel de element. |
| descendingIterator() | Returnează un iterator peste elementele din acest set în ordine descrescătoare. |
| descendingSet() | Returnează o vizualizare în ordine inversă a elementelor conținute în acest set. |
| podea(E e) | Returnează cel mai mare element din acest set mai mic sau egal cu elementul dat sau nul dacă nu există un astfel de element. |
| headSet(E laElement) | Returnează o vizualizare a porțiunii din acest set ale cărei elemente sunt strict mai mici decât toElement. |
| headSet(E la Element boolean inclusiv) | Returnează o vedere a porțiunii din acest set ale cărei elemente sunt mai mici decât (sau egale cu dacă inclusiv este adevărat) la Element. |
| mai mare (E e) | Returnează cel mai mic element din acest set strict mai mare decât elementul dat sau nul dacă nu există un astfel de element. |
| iterator() | Returnează un iterator peste elementele din acest set în ordine crescătoare. |
| mai jos (E e) | Returnează cel mai mare element din acest set strict mai mic decât elementul dat sau nul dacă nu există un astfel de element. |
| pollFirst() | Preia și elimină primul element (cel mai mic) sau returnează null dacă acest set este gol. |
| sondajLast() | Preia și elimină ultimul (cel mai înalt) element sau returnează null dacă acest set este gol. |
subSet(E fromElement boolean de la E inclusiv laElement boolean laInclusiv) | Returnează o vedere a porțiunii din acest set ale cărei elemente variază de la de laElement la până laElement. |
| subSet(E de laElement E laElement) | Returnează o vizualizare a porțiunii din acest set ale cărei elemente variază de la fromElement inclusiv la toElement exclusive. |
| tailSet(E fromElement) | Returnează o vedere a porțiunii din acest set ale cărei elemente sunt mai mari sau egale cu fromElement. |
| tailSet(E fromElement boolean inclusiv) | Returnează o vedere a porțiunii din acest set ale cărei elemente sunt mai mari decât (sau egale cu dacă inclusiv este adevărat) fromElement. |
Metode moștenite de la interfața java.util.SortedSet
Metodă | Descriere |
|---|---|
| comparator() | Această metodă returnează comparatorul folosit pentru a ordona elementele din această mulțime sau nul dacă această mulțime folosește ordonarea naturală a elementelor sale. |
| primul() | Această metodă returnează primul (cel mai mic) element prezent în acest set. |
| dura() | Această metodă returnează ultimul (cel mai înalt) element prezent în set. |
| spliterator() | Creează un Spliterator peste elementele din acest set sortat. |
Metode moștenite de la interfața java.util.Set
Metodă | Descriere |
|---|---|
| adauga (element) | Această metodă este folosită pentru a adăuga un anumit element la set. Funcția adaugă elementul numai dacă elementul specificat nu este deja prezent în set, altfel funcția returnează False dacă elementul este deja prezent în set. |
| addAll(colecție) | Această metodă este folosită pentru a adăuga toate elementele din colecția menționată la setul existent. Elementele sunt adăugate aleatoriu fără a urma vreo ordine specifică. |
| clar() | Această metodă este folosită pentru a elimina toate elementele din set, dar nu pentru a șterge setul. Referința pentru set încă există. |
| conţine(element) | Această metodă este folosită pentru a verifica dacă un anumit element este prezent sau nu în set. |
| conţineAll(colecţie) | Această metodă este folosită pentru a verifica dacă setul conține sau nu toate elementele prezente în colecția dată. Această metodă returnează true dacă setul conține toate elementele și returnează false dacă lipsește vreunul dintre elemente. |
| este egal() | Compară obiectul specificat cu acest set pentru egalitate. |
| hashCode() | Această metodă este utilizată pentru a obține valoarea hashCode pentru această instanță a setului. Returnează o valoare întreagă care este valoarea hashCode pentru această instanță a setului. |
| este gol() | Această metodă este folosită pentru a verifica dacă un NavigableSet este gol sau nu. |
| elimina (element) | Această metodă este folosită pentru a elimina elementul dat din set. Această metodă returnează True dacă elementul specificat este prezent în Set, altfel returnează False. |
| removeAll(colecție) | Această metodă este folosită pentru a elimina toate elementele din colecție care sunt prezente în set. Această metodă returnează true dacă acest set s-a modificat ca urmare a apelului. |
| retainAll (colecție) | Această metodă este folosită pentru a reține toate elementele din mulțime care sunt menționate în colecția dată. Această metodă returnează true dacă acest set s-a modificat ca urmare a apelului. |
| dimensiune() | Această metodă este folosită pentru a obține dimensiunea setului. Aceasta returnează o valoare întreagă care indică numărul de elemente. |
| toArray() | Această metodă este folosită pentru a forma o matrice din aceleași elemente ca și cea a setului. |
| toArray(T[] a) | Returnează o matrice care conține toate elementele din acest set; tipul de rulare al matricei returnate este cel al matricei specificate. |
Metode declarate în interfața java.util.Collection
| Metodă | Descriere |
|---|---|
| parallelStream() | Returnează un flux posibil paralel cu această colecție ca sursă. |
| removeIf(Predicat super E>filtra) | Îndepărtează toate elementele acestei colecții care satisfac predicatul dat. |
| stream() | Returnează un flux secvenţial cu această colecţie ca sursă. |
| toArray?(IntFunction | Returnează o matrice care conține toate elementele din această colecție folosind funcția generator furnizată pentru a aloca matricea returnată. |
Metode declarate în Interfață java.lang.Iterable
| Metodă | Descriere |
|---|---|
| pentru fiecare (consumator super T>acţiune) | Efectuează acțiunea dată pentru fiecare element din Iterable până când toate elementele au fost procesate sau acțiunea aruncă o excepție. |