A Java nyelven a NavigableSet altípusa a SortedSet felület. Lehetővé teszi számunkra, hogy különféle műveleteket hajtsunk végre, mint például a legközelebbi egyezések megszerzése egy adott elemhez, csökkenő sorrendű iteráció és mások. Módszereket biztosít a halmaz elemei közötti navigáláshoz.
Például A NavigableSet felület lehetővé teszi, hogy növekvő és csökkenő sorrendben is navigáljunk a halmazban, ellentétben a SortedSet-tel, amely csak a növekvő sorrendet támogatja. A NavigableSet felületet megvalósító osztályok a következők TreeSet és ConcurrentSkipListSet
- A NavigableSet kiterjeszti a SortedSet-et, és így olyan módszereket biztosít, mint a first() last() headSet() tailSet() stb.
- Lehetővé teszi a navigációt mindkét irányban növekvő és csökkenő sorrendben
- A NavigableSet leggyakoribb megvalósítása a TreeSet.
Példa: Ez a példa bemutatja egy NavigableSet létrehozását a TreeSet segítségével, és elemek hozzáadását, amelyek automatikusan növekvő sorrendbe rendezik őket.
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); } }
Kimenet
Navigable Set: [10 20 30 40 50]
Az alábbi diagram bemutatja a Java halmazokhoz kapcsolódó gyűjteményi keretrendszerének öröklődési struktúráját.
A TreeSet egy osztály, amely megvalósítja NavigableSet ami viszont kiterjeszti a SortedSet ami kiterjeszti Készlet .
A NavigableSet nyilatkozata
Java-ban a NavigableSet deklarációja a következőképpen deklarálható:
NavigableSet
setName; térkép gépírással
Megjegyzés: ' A Type' az elem típusa a halmazban (pl. integer String stb.), a setName pedig a változó neve.
NavigableSet objektumok létrehozása
Közvetlenül nem tudunk NavigableSet-et létrehozni, mivel ez egy interfész. Ehelyett egy hasonló osztályt használunk TreeSet hogy megvalósítja azt. A generikák segítségével meghatározhatjuk, hogy a halmaz milyen objektumokat fog tárolni. Ez a típusbiztos készlet a következőképpen definiálható:
NavigableSet
set = new TreeSet ();
Példa: Ez a példa bemutatja, hogyan használhatja a NavigableSet különféle módszereit, mint például a descedingSet() tailSet() low() pollFirst() és pollLast() a rendezett halmaz normál és fordított sorrendben történő manipulálására és navigálására.
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()); } }
Kimenet:
Különféle műveletek végrehajtása a NavigableSet-en
1. Elemek hozzáadása: Használhatjuk a add() módszer elemek beszúrására a NavigableSetbe. Az elemek rendezési sorrendben vannak tárolva, nem engedélyezettek az ismétlődések, és a null értékeket sem fogadja el a NavigableSet.
Példa: Ez a példa bemutatja elemek hozzáadását a NavigableSethez az add() használatával, ahol a duplikátumokat a rendszer figyelmen kívül hagyja, és az elemeket növekvő sorrendbe rendezi.
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); } }
Kimenet
NavigableSet: [A B C]
2. Elemek elérése: Az elemek hozzáadása után, ha hozzá akarunk férni az elemekhez, használhatunk beépített módszereket, mint pl tartalmazza () első() utolsó() stb.
knn algoritmus
Példa: Ez a példa bemutatja elemek hozzáadását a NavigableSet elemhez, amely ellenőrzi egy elem létezését, és lekéri az első és az utolsó elemet.
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()); } }
Kimenet
NavigableSet: [A B C] D exists in the NavigableSet?: false First Element of NavigableSet: A Last Element of NavigableSet: C
3. Elemek eltávolítása: Az értékek eltávolíthatók a NavigableSet-ből a eltávolítás() pollFirst() pollLast() .
Példa: Ez a példa bemutatja az elemek eltávolítását a NavigableSetből.
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); } }
Kimenet
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. Iteráló elemek: Számos módja van a NavigableSet-en keresztüli iterációnak. A leghíresebb az, hogy a továbbfejlesztett ciklushoz.
Példa: Ez a példa bemutatja elemek hozzáadását a NavigableSet-hez, és növekvő sorrendben történő iterációját.
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 + ' '); } }
Kimenet
A B C D E Z
Mód
Az alábbiakban a NavigableSet felületen található módszerek láthatók.
Mód | Leírás |
|---|---|
| mennyezet (E e) | A halmaz azon legkisebb elemét adja vissza, amely nagyobb vagy egyenlő az adott elemmel, vagy nullát, ha nincs ilyen elem. |
| descendingIterator() | Egy iterátort ad vissza a halmaz elemei felett, csökkenő sorrendben. |
| descendingSet() | A készletben található elemek fordított sorrendű nézetét adja vissza. |
| emelet (E e) | Visszaadja a halmaz legnagyobb elemét, amely kisebb vagy egyenlő, mint az adott elem, vagy nullát, ha nincs ilyen elem. |
| fejhallgató (E-elemhez) | A halmaz azon részének nézetét adja vissza, amelynek elemei szigorúan kisebbek, mint a toElement. |
| headSet (E toElement logikai értékkel együtt) | A halmaz azon részének nézetét adja vissza, amelynek elemei kisebbek (vagy egyenlőek, ha igaz), mint az Element. |
| magasabb (E e) | Visszaadja a halmaz legkisebb elemét, amely szigorúan nagyobb, mint az adott elem, vagy nullát, ha nincs ilyen elem. |
| iterátor() | Egy iterátort ad vissza a halmaz elemei felett növekvő sorrendben. |
| alacsonyabb (E e) | Visszaadja a halmaz legnagyobb elemét, amely szigorúan kisebb, mint az adott elem, vagy nullát, ha nincs ilyen elem. |
| pollFirst() | Lekéri és eltávolítja az első (legalacsonyabb) elemet, vagy nullát ad vissza, ha ez a halmaz üres. |
| pollLast() | Lekéri és eltávolítja az utolsó (legmagasabb) elemet, vagy nullát ad vissza, ha ez a halmaz üres. |
subSet(E from Element logikai érték az Inclusive E-től az Elem logikai értékig inkluzívig) | A halmaz azon részének nézetét adja vissza, amelynek elemei az Elemtől az Elemig terjednek. |
| részhalmaz (E az E elemtől az elemig) | A halmaz azon részének nézetét adja vissza, amelynek elemei az Elemet magában foglalótól az Elemet kizárólagosig terjednek. |
| farokkészlet (E az elemből) | A halmaz azon részének nézetét adja vissza, amelynek elemei nagyobbak vagy egyenlőek, mint fromElement. |
| tailSet (E az Element logikai értékéből, beleértve) | A halmaz azon részének nézetét adja vissza, amelynek elemei nagyobbak (vagy egyenlőek, ha az inkluzív érték igaz) az Elemből. |
A java.util.SortedSet interfésztől örökölt módszerek
Módszer | Leírás |
|---|---|
| összehasonlító() | Ez a metódus visszaadja a halmaz elemeinek rendezéséhez használt összehasonlítót, vagy nullát, ha ez a halmaz elemeinek természetes sorrendjét használja. |
| első() | Ez a metódus a halmaz első (legalacsonyabb) elemét adja vissza. |
| utolsó() | Ez a metódus a halmaz utolsó (legmagasabb) elemét adja vissza. |
| osztó() | Elválasztót hoz létre a rendezett halmaz elemei felett. |
A java.util.Set felületről örökölt módszerek
Módszer | Leírás |
|---|---|
| add(elem) | Ez a módszer egy adott elem hozzáadására szolgál a készlethez. A függvény csak akkor adja hozzá az elemet, ha a megadott elem még nem szerepel a halmazban, különben a függvény False értéket ad vissza, ha az elem már jelen van a halmazban. |
| addAll (gyűjtemény) | Ezzel a módszerrel az említett gyűjtemény összes elemét hozzáfűzi a meglévő halmazhoz. Az elemek véletlenszerűen, meghatározott sorrend betartása nélkül kerülnek hozzáadásra. |
| világos() | Ez a módszer az összes elem eltávolítására szolgál a készletből, de nem törli a készletet. A készlet hivatkozása továbbra is létezik. |
| (elemet) tartalmaz | Ezzel a módszerrel ellenőrizhető, hogy egy adott elem jelen van-e a készletben vagy sem. |
| Mindent tartalmaz (gyűjtemény) | Ezzel a módszerrel ellenőrizhető, hogy a halmaz tartalmazza-e az adott gyűjteményben található összes elemet vagy sem. Ez a metódus igazat ad vissza, ha a halmaz minden elemet tartalmaz, és hamis értéket ad vissza, ha valamelyik elem hiányzik. |
| egyenlő () | Összehasonlítja a megadott objektumot ezzel a halmazzal az egyenlőség érdekében. |
| hashCode() | Ezzel a módszerrel kapjuk meg a HashCode értékét a készlet ezen példányához. Egy egész értéket ad vissza, amely a készlet ezen példányának hashCode értéke. |
| üres() | Ezzel a módszerrel ellenőrizhető, hogy a NavigableSet üres-e vagy sem. |
| eltávolítás(elem) | Ezzel a módszerrel távolítható el az adott elem a halmazból. Ez a metódus igaz értéket ad vissza, ha a megadott elem jelen van a készletben, ellenkező esetben False értéket ad vissza. |
| távolítsa el az összeset (gyűjtemény) | Ezzel a módszerrel eltávolítható a készletben található összes elem a gyűjteményből. Ez a metódus igazat ad vissza, ha ez a halmaz megváltozott a hívás hatására. |
| mindent megtart (gyűjtemény) | Ezzel a módszerrel megőrizzük a halmaz összes elemét, amely az adott gyűjteményben szerepel. Ez a metódus igazat ad vissza, ha ez a halmaz megváltozott a hívás hatására. |
| méret() | Ezzel a módszerrel határozzuk meg a készlet méretét. Ez egy egész értéket ad vissza, amely az elemek számát jelzi. |
| toArray() | Ezzel a módszerrel a halmazéval megegyező elemekből tömböt képeznek. |
| toArray(T[] a) | Egy tömböt ad vissza, amely a halmaz összes elemét tartalmazza; a visszaadott tömb futásidejű típusa a megadott tömbé. |
A java.util.Collection felületen deklarált módszerek
| Módszer | Leírás |
|---|---|
| parallelStream() | Egy valószínűleg párhuzamos adatfolyamot ad vissza, ennek a gyűjteménynek a forrása. |
| removeIf(Predikátum super E>szűrő) | Eltávolítja a gyűjtemény minden olyan elemét, amely megfelel az adott predikátumnak. |
| folyam() | Egy szekvenciális adatfolyamot ad vissza, amelynek forrása ez a gyűjtemény. |
| toArray?(IntFunction | Egy tömböt ad vissza, amely a gyűjtemény összes elemét tartalmazza a megadott generátor függvény segítségével a visszaadott tömb lefoglalásához. |
A java.lang.Iterable felületen deklarált módszerek
| Módszer | Leírás |
|---|---|
| forEach(Fogyasztó super T>akció) | Végrehajtja az adott műveletet az iterable minden elemére, amíg az összes elemet fel nem dolgozták, vagy a művelet kivételt nem tesz. |
mikor ér véget a q1