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]
xor c++
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.
integer double javaJava
// 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.
ipconfig pro linux zdarmaJava
// 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 vlk versus liška | 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 jejím zdrojem. |
| toArray? (IntFunction | Vrátí pole obsahující všechny prvky v této kolekci pomocí poskytnuté funkce generátoru k přidělení 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. |