NavigableSet v Javě
V Javě NavigableSet je podtypem SortedSet rozhraní. Umožňuje nám provádět různé operace, jako je získání nejbližších shod pro iteraci daného prvku sestupně a další. Poskytuje metody pro procházení prvků v sadě.
Například Rozhraní NavigableSet nám umožňuje procházet sadou ve vzestupném i sestupném pořadí na rozdíl od SortedSet, který podporuje pouze vzestupné pořadí. Třídy, které implementují rozhraní NavigableSet, jsou TreeSet a ConcurrentSkipListSet
- NavigableSet rozšiřuje SortedSet a poskytuje tak metody jako first() last() headSet() tailSet() atd.
- Umožňuje navigaci v obou směrech vzestupně i sestupně
- Nejběžnější implementací NavigableSet je TreeSet.
Příklad: Tento příklad ukazuje vytvoření NavigableSet pomocí TreeSet a přidání prvků do ní, které je automaticky seřadí ve vzestupném pořadí.
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 ); } }
Výstup
Navigable Set: [10 20 30 40 50]
Níže uvedený diagram ukazuje strukturu dědičnosti v rámci kolekce Java týkající se sad.
TreeSet je třída, která implementuje NavigableSet což zase rozšiřuje SortedSet který rozšiřuje Soubor .
Deklarace NavigableSet
V Javě lze deklaraci NavigableSet deklarovat jako:
NavigableSet
setName;
Poznámka: ' Type' je typ prvku v sadě (např. celé číslo String atd.) a setName je název proměnné.
Vytváření objektů NavigableSet
Nemůžeme vytvořit NavigableSet přímo, protože se jedná o rozhraní. Místo toho používáme třídu jako TreeSet která to implementuje. Pomocí generik můžeme definovat typ objektů, které bude sada ukládat. Tuto typově bezpečnou sadu lze definovat jako:
NavigableSet
set = nový TreeSet ();
Příklad: Tento příklad ukazuje, jak používat různé metody NavigableSet, jako je DesdingSet() tailSet() lower() pollFirst() a pollLast() k manipulaci a procházení setříděné sady v normálním i opačném pořadí.
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 ()); } }
výstup:
Provádění různých operací na NavigableSet
1. Přidání prvků: Můžeme použít přidat() metoda pro vložení prvků do NavigableSet. Prvky jsou uloženy v seřazeném pořadí, žádné duplikáty nejsou povoleny a NavigableSet také nepřijímá hodnoty null.
Příklad: Tento příklad ukazuje přidávání prvků do NavigableSet pomocí add(), kde jsou duplikáty ignorovány a prvky jsou seřazeny ve vzestupném pořadí.
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 ); } }
Výstup
NavigableSet: [A B C]
2. Přístup k prvkům: Po přidání prvků, pokud chceme k prvkům přistupovat, můžeme použít vestavěné metody jako obsahuje() první() poslední() atd.
Příklad: Tento příklad ukazuje přidávání prvků do NavigableSet, kontrolu existence prvku a načítání prvního a posledního prvku.
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 ()); } }
Výstup
NavigableSet: [A B C] D exists in the NavigableSet?: false First Element of NavigableSet: A Last Element of NavigableSet: C
3. Odebrání prvků: Hodnoty lze odstranit z NavigableSet pomocí odstranit() pollFirst() pollLast() .
Příklad: Tento příklad ukazuje odebrání prvků z 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 ); } }
Výstup
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. Iterační prvky: Existují různé způsoby, jak iterovat přes NavigableSet. Nejznámější z nich je použití vylepšená smyčka for.
Příklad: Tento příklad ukazuje přidávání prvků do NavigableSet a jejich iterování ve vzestupném pořadí.
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 + ' ' ); } }
Výstup
A B C D E Z
Metody
Níže jsou uvedeny metody přítomné v rozhraní NavigableSet.
| Metody | Popis |
|---|---|
| strop (E e) | Vrátí nejmenší prvek v této sadě, který je větší nebo roven danému prvku nebo null, pokud takový prvek neexistuje. |
| descendingIterator() | Vrátí iterátor nad prvky v této sadě v sestupném pořadí. |
| descendingSet() | Vrátí pohled v opačném pořadí na prvky obsažené v této sadě. |
| patro (E e) | Vrátí největší prvek v této sadě menší nebo rovný danému prvku nebo null, pokud takový prvek neexistuje. |
| headset (E toElement) | Vrátí pohled na část této sady, jejíž prvky jsou striktně menší než toElement. |
| headset (včetně booleovských logických prvků E toElement) | Vrátí pohled na část této sady, jejíž prvky jsou menší než (nebo se rovnají, je-li zahrnuto pravdivé) toElement. |
| vyšší (E e) | Vrátí nejmenší prvek v této sadě přísně větší než daný prvek nebo hodnotu null, pokud takový prvek neexistuje. |
| iterátor() | Vrátí iterátor nad prvky v této sadě ve vzestupném pořadí. |
| nižší (E e) | Vrátí největší prvek v této sadě přísně menší než daný prvek nebo hodnotu null, pokud takový prvek neexistuje. |
| pollFirst() | Načte a odstraní první (nejnižší) prvek nebo vrátí hodnotu null, pokud je tato sada prázdná. |
| pollLast() | Načte a odstraní poslední (nejvyšší) prvek nebo vrátí hodnotu null, pokud je tato sada prázdná. |
| subSet(E fromElement boolean fromInclusive E toElement boolean toInclusive) | Vrátí pohled na část této sady, jejíž prvky se pohybují od fromElement do toElement. |
| podmnožina (E fromElement E toElement) | Vrátí pohled na část této sady, jejíž prvky se pohybují od fromElement včetně do toElement exclusive. |
| tailSet(E fromElement) | Vrátí pohled na část této sady, jejíž prvky jsou větší nebo rovné fromElement. |
| tailSet (E fromElement boolean včetně) | Vrátí pohled na část této množiny, jejíž prvky jsou větší než (nebo se rovnají, pokud je zahrnuto pravdivé) fromElement. |
Metody zděděné z rozhraní java.util.SortedSet
| Metoda | Popis |
|---|---|
| srovnávač() | Tato metoda vrátí komparátor použitý k řazení prvků v této sadě nebo hodnotu null, pokud tato sada používá přirozené uspořádání svých prvků. |
| první() | Tato metoda vrací první (nejnižší) prvek přítomný v této sadě. |
| poslední() | Tato metoda vrací poslední (nejvyšší) prvek přítomný v sadě. |
| rozdělovač() | Vytvoří Spliterator nad prvky v této tříděné sadě. |
Metody zděděné z rozhraní java.util.Set
| Metoda | Popis |
|---|---|
| přidat (prvek) | Tato metoda se používá k přidání konkrétního prvku do sady. Funkce přidá prvek pouze v případě, že zadaný prvek již není v sadě přítomen, jinak funkce vrátí hodnotu False, pokud je prvek již v sadě přítomen. |
| addAll(kolekce) | Tato metoda se používá k připojení všech prvků ze zmíněné kolekce k existující sadě. Prvky se přidávají náhodně, aniž by se řídily konkrétním pořadím. |
| jasný() | Tato metoda se používá k odstranění všech prvků ze sady, ale nikoli k odstranění sady. Odkaz na sadu stále existuje. |
| obsahuje (prvek) | Tato metoda se používá ke kontrole, zda je určitý prvek přítomen v sadě nebo ne. |
| obsahuje vše (kolekce) | Tato metoda se používá ke kontrole, zda sada obsahuje všechny prvky přítomné v dané kolekci nebo ne. Tato metoda vrátí hodnotu true, pokud sada obsahuje všechny prvky, a vrátí hodnotu false, pokud některý z prvků chybí. |
| rovná se() | Porovná zadaný objekt s touto množinou pro rovnost. |
| hashCode() | Tato metoda se používá k získání hodnoty hashCode pro tuto instanci sady. Vrací celočíselnou hodnotu, což je hodnota hashCode pro tuto instanci sady. |
| isEmpty() | Tato metoda se používá ke kontrole, zda je NavigableSet prázdný nebo ne. |
| odstranit (prvek) | Tato metoda se používá k odstranění daného prvku ze sady. Tato metoda vrátí hodnotu True, pokud je zadaný prvek přítomen v sadě, jinak vrátí hodnotu False. |
| odstranit vše (kolekce) | Tato metoda se používá k odstranění všech prvků z kolekce, které jsou přítomny v sadě. Tato metoda vrátí hodnotu true, pokud se tato sada v důsledku volání změnila. |
| zachovat vše (kolekce) | Tato metoda slouží k zachování všech prvků ze sady, které jsou v dané kolekci uvedeny. Tato metoda vrátí hodnotu true, pokud se tato sada v důsledku volání změnila. |
| velikost() | Tato metoda se používá k získání velikosti sady. To vrátí celočíselnou hodnotu, která označuje počet prvků. |
| toArray() | Tato metoda se používá k vytvoření pole stejných prvků jako sada. |
| toArray(T[] a) | Vrátí pole obsahující všechny prvky v této sadě; typ runtime vráceného pole je typ zadaného pole. |
Metody deklarované v rozhraní java.util.Collection
| Metoda | Popis |
|---|---|
| paralelní proud() | Vrátí možná paralelní proud s touto sbírkou jako zdrojem. |
| removeIf(Predikát super E>filtr) | Odebere všechny prvky této kolekce, které splňují daný predikát. |
| proud() | Vrátí sekvenční stream s touto sbírkou jako zdrojem. |
| toArray? (IntFunction | Vrátí pole obsahující všechny prvky v této kolekci pomocí poskytnuté funkce generátoru pro alokaci vráceného pole. |
Metody deklarované v rozhraní java.lang.Iterable
| Metoda | Popis |
|---|---|
| pro každého (spotřebitele super T>akce) | Provede danou akci pro každý prvek Iterable, dokud nejsou zpracovány všechny prvky nebo akce nevyvolá výjimku. |