W Javie Zestaw żeglowny jest podtypem Posortowany zestaw interfejs. Pozwala nam wykonywać różne operacje, takie jak uzyskiwanie najbliższych dopasowań dla danego elementu, iteracja w kolejności malejącej i inne. Zapewnia metody poruszania się po elementach zestawu.
Na przykład Interfejs NavigableSet pozwala nam poruszać się po zestawie zarówno w kolejności rosnącej, jak i malejącej, w przeciwieństwie do SortedSet, który obsługuje tylko kolejność rosnącą. Klasy implementujące interfejs NavigableSet to Zestaw drzew I Zestaw współbieżnych list pominięć
- NavigableSet rozszerza SortedSet i udostępnia w ten sposób metody takie jak First() last() headSet() tailSet() itp.
- Umożliwia nawigację w obu kierunkach, w kolejności rosnącej i malejącej
- Najpopularniejszą implementacją NavigableSet jest TreeSet.
Przykład: Ten przykład ilustruje tworzenie zestawu NavigableSet przy użyciu TreeSet i dodanie do niego elementów, które automatycznie sortują je w kolejności rosnącej.
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); } }
Wyjście
Navigable Set: [10 20 30 40 50]
Poniższy diagram przedstawia strukturę dziedziczenia w środowisku kolekcji Java związaną z zestawami.
TreeSet to klasa, która implementuje Zestaw żeglowny co z kolei rozszerza SortedSet, który się rozszerza Ustawić .
Deklaracja NavigableSet
W Javie deklarację NavigableSet można zadeklarować jako:
Zestaw żeglowny
nazwa zestawu;
Notatka: ' Type' to typ elementu w zestawie (np. liczba całkowita String itp.), a setName to nazwa zmiennej.
Tworzenie obiektów NavigableSet
Nie możemy bezpośrednio utworzyć zestawu NavigableSet, ponieważ jest to interfejs. Zamiast tego używamy klasy takiej jak Zestaw drzew który to realizuje. Za pomocą typów ogólnych możemy zdefiniować typ obiektów, które zestaw będzie przechowywać. Ten zestaw bezpieczny dla typu można zdefiniować jako:
Zestaw żeglowny
zestaw = nowy Zestaw Drzewa ();
Przykład: W tym przykładzie pokazano, jak używać różnych metod NavigableSet, takich jak descedingSet() tailSet() less() pollFirst() i pollLast() do manipulowania i nawigacji po posortowanym zestawie w normalnej i odwrotnej kolejności.
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()); } }
Wyjście:
Wykonywanie różnych operacji na NavigableSet
1. Dodawanie elementów: Możemy skorzystać z dodać() metoda wstawiania elementów do zestawu NavigableSet. Elementy są przechowywane w kolejności posortowanej, duplikaty nie są dozwolone, a wartości null również nie są akceptowane przez zestaw NavigableSet.
Przykład: Ten przykład ilustruje dodawanie elementów do NavigableSet za pomocą metody add(), gdzie duplikaty są ignorowane, a elementy są sortowane w kolejności rosnącej.
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); } }
Wyjście
NavigableSet: [A B C]
2. Dostęp do elementów: Po dodaniu elementów, jeśli chcemy uzyskać do nich dostęp, możemy skorzystać z wbudowanych metod, takich jak zawiera() Pierwszy() ostatni() itp.
Przykład: Ten przykład ilustruje dodawanie elementów do NavigableSet, sprawdzanie istnienia elementu i pobieranie pierwszego i ostatniego elementu.
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()); } }
Wyjście
NavigableSet: [A B C] D exists in the NavigableSet?: false First Element of NavigableSet: A Last Element of NavigableSet: C
3. Usuwanie elementów: Wartości można usunąć z zestawu NavigableSet za pomocą metody usunąć() pierwsza ankieta() ankietaOstatnia() .
Przykład: Ten przykład ilustruje usuwanie elementów z zestawu 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); } }
Wyjście
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. Elementy iteracyjne: Istnieją różne sposoby iteracji po zestawie NavigableSet. Najbardziej znanym jest użycie udoskonalona pętla for.
Przykład: Ten przykład ilustruje dodawanie elementów do NavigableSet i iterację po nim w kolejności rosnącej.
statyczna JavaJava
// 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 + ' '); } }
Wyjście
A B C D E Z
Metody
Poniżej przedstawiono metody dostępne w interfejsie NavigableSet.
Metody | Opis |
|---|---|
| sufit (E e) | Zwraca najmniejszy element w tym zestawie, większy lub równy podanemu elementowi lub null, jeśli taki element nie istnieje. |
| malejącyIterator() | Zwraca iterator po elementach w tym zestawie w kolejności malejącej. |
| malejącoSet() | Zwraca widok w odwrotnej kolejności elementów zawartych w tym zestawie. |
| piętro(E e) | Zwraca największy element w tym zestawie, mniejszy lub równy podanemu elementowi lub null, jeśli taki element nie istnieje. |
| headSet(E doElement) | Zwraca widok części tego zestawu, którego elementy są ściśle mniejsze niż toElement. |
| headSet(E toElement wartość logiczna włącznie) | Zwraca widok części tego zestawu, którego elementy są mniejsze niż (lub równe, jeśli opcja inclusive ma wartość true) toElement. |
| wyższy (E e) | Zwraca najmniejszy element w tym zestawie ściśle większy od podanego elementu lub null, jeśli taki element nie istnieje. |
| iterator() | Zwraca iterator po elementach w tym zestawie w kolejności rosnącej. |
| niższy (E e) | Zwraca największy element w tym zestawie, ściśle mniejszy od podanego elementu lub null, jeśli taki element nie istnieje. |
| pierwsza ankieta() | Pobiera i usuwa pierwszy (najniższy) element lub zwraca wartość null, jeśli ten zestaw jest pusty. |
| ankietaOstatnia() | Pobiera i usuwa ostatni (najwyższy) element lub zwraca wartość null, jeśli ten zestaw jest pusty. |
subSet(E z elementu logicznego fromInclusive E toElement boolean toInclusive) | Zwraca widok części tego zestawu, którego elementy mieszczą się w zakresie od fromElement do toElement. |
| podzbiór(E z elementu E do elementu) | Zwraca widok części tego zestawu, którego elementy wahają się od fromElement włącznie do toElement Exclusive. |
| tailSet(E z elementu) | Zwraca widok części tego zestawu, którego elementy są większe lub równe fromElement. |
| tailSet(E z elementu logicznego włącznie) | Zwraca widok części tego zestawu, którego elementy są większe niż (lub równe, jeśli opcja inclusive ma wartość true) fromElement. |
Metody Dziedziczone z interfejsu java.util.SortedSet
Metoda | Opis |
|---|---|
| komparator() | Ta metoda zwraca komparator używany do porządkowania elementów w tym zestawie lub wartość null, jeśli w tym zestawie zastosowano naturalną kolejność elementów. |
| Pierwszy() | Ta metoda zwraca pierwszy (najniższy) element występujący w tym zestawie. |
| ostatni() | Ta metoda zwraca ostatni (najwyższy) element występujący w zestawie. |
| rozdzielacz() | Tworzy Spliterator na elementach w tym posortowanym zestawie. |
Metody Dziedziczone z interfejsu java.util.Set
Metoda | Opis |
|---|---|
| dodać (element) | Metoda ta służy do dodania konkretnego elementu do zbioru. Funkcja dodaje element tylko wtedy, gdy określony element nie znajduje się jeszcze w zestawie, w przeciwnym razie funkcja zwraca False, jeśli element jest już obecny w zestawie. |
| dodaj wszystko (kolekcja) | Metoda ta służy do dołączenia wszystkich elementów wspomnianej kolekcji do istniejącego zbioru. Elementy dodawane są losowo, bez zachowania określonej kolejności. |
| jasne() | Ta metoda służy do usunięcia wszystkich elementów ze zbioru, ale nie do usunięcia zbioru. Odniesienie do zestawu nadal istnieje. |
| zawiera (element) | Metoda ta służy do sprawdzenia, czy dany element występuje w Zestawie, czy też nie. |
| zawieraWszystko(kolekcja) | Metoda ta służy do sprawdzenia, czy zbiór zawiera wszystkie elementy występujące w danej kolekcji, czy też nie. Ta metoda zwraca wartość true, jeśli zestaw zawiera wszystkie elementy, i zwraca wartość false, jeśli brakuje któregokolwiek z elementów. |
| równa się() | Porównuje określony obiekt z tym zestawem pod kątem równości. |
| hashCode() | Ta metoda służy do uzyskania wartości hashCode dla tej instancji zestawu. Zwraca wartość całkowitą, która jest wartością hashCode dla tej instancji zestawu. |
| jestPusty() | Ta metoda służy do sprawdzania, czy zestaw NavigableSet jest pusty, czy nie. |
| usuń (element) | Metoda ta służy do usunięcia danego elementu ze zbioru. Ta metoda zwraca True, jeśli określony element jest obecny w zestawie, w przeciwnym razie zwraca False. |
| usuń wszystko (kolekcja) | Metoda ta służy do usunięcia z kolekcji wszystkich elementów znajdujących się w zbiorze. Ta metoda zwraca wartość true, jeśli ten zestaw uległ zmianie w wyniku wywołania. |
| zachowaj wszystko (kolekcja) | Metoda ta służy do zachowania wszystkich elementów ze zbioru, które są wymienione w danej kolekcji. Ta metoda zwraca wartość true, jeśli ten zestaw uległ zmianie w wyniku wywołania. |
| rozmiar() | Ta metoda służy do uzyskania rozmiaru zestawu. Zwraca wartość całkowitą, która oznacza liczbę elementów. |
| do tablicy() | Ta metoda służy do tworzenia tablicy zawierającej te same elementy, co tablica Set. |
| doArray(T[]a) | Zwraca tablicę zawierającą wszystkie elementy tego zestawu; typem środowiska wykonawczego zwróconej tablicy jest typ określonej tablicy. |
Metody zadeklarowane w interfejsie java.util.Collection
| Metoda | Opis |
|---|---|
| strumień równoległy() | Zwraca prawdopodobnie równoległy Stream z tą kolekcją jako źródłem. |
| usuńIf(Predykat super E>filtr) | Usuwa wszystkie elementy tej kolekcji, które spełniają podany predykat. |
| strumień() | Zwraca sekwencyjny Stream z tą kolekcją jako źródłem. |
| do tablicy? (IntFunction | Zwraca tablicę zawierającą wszystkie elementy w tej kolekcji przy użyciu dostarczonej funkcji generatora w celu alokacji zwróconej tablicy. |
Metody zadeklarowane w interfejsie java.lang.Iterable
| Metoda | Opis |
|---|---|
| dla każdego (konsument super T>działanie) | Wykonuje daną akcję dla każdego elementu Iterable, dopóki wszystkie elementy nie zostaną przetworzone lub akcja nie zgłosi wyjątku. |