В Java NavigableSet е подтип на СортиранНабор интерфейс. Позволява ни да извършваме различни операции като получаване на най-близките съвпадения за даден елемент в низходящ ред итерация и други. Той предоставя методи за навигиране през елементите в комплекта.
Например Интерфейсът NavigableSet ни позволява да навигираме през набора както във възходящ, така и в низходящ ред, за разлика от SortedSet, който поддържа само възходящ ред. Класовете, които имплементират интерфейса NavigableSet са TreeSet и ConcurrentSkipListSet
- NavigableSet разширява SortedSet и по този начин предоставя методи като first() last() headSet() tailSet() и т.н.
- Тя ви позволява да навигирате в двете посоки във възходящ и низходящ ред
- Най-често срещаната реализация на NavigableSet е TreeSet.
Пример: Този пример демонстрира създаване на NavigableSet с помощта на TreeSet и добавяне на елементи към него, което автоматично ги сортира във възходящ ред.
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); } }
Изход
Navigable Set: [10 20 30 40 50]
Диаграмата по-долу демонстрира структурата на наследяване в рамката за събиране на Java, свързана с набори.
TreeSet е клас, който имплементира NavigableSet което от своя страна разширява SortedSet което разширява Комплект .
java колекция рамка
Декларация на NavigableSet
В Java декларацията на NavigableSet може да бъде декларирана като:
NavigableSet
setName;
Забележка: ' Type' е типът на елемента в набора (напр. цял низ и т.н.), а setName е името на променливата.
Създаване на NavigableSet обекти
Не можем да създадем NavigableSet директно, тъй като това е интерфейс. Вместо това използваме клас като TreeSet който го прилага. С помощта на генерики можем да дефинираме типа обекти, които наборът ще съхранява. Този тип безопасен набор може да се дефинира като:
NavigableSet
set = нов TreeSet ();
Пример: Този пример демонстрира как да използвате различни методи на NavigableSet като descedingSet() tailSet() lower() pollFirst() и pollLast() за манипулиране и навигиране в сортиран набор както в нормален, така и в обратен ред.
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()); } }
Изход:
Извършване на различни операции върху NavigableSet
1. Добавяне на елементи: Можем да използваме добави () метод за вмъкване на елементи в NavigableSet. Елементите се съхраняват в сортирания ред, не се допускат дубликати и нулевите стойности също не се приемат от NavigableSet.
Пример: Този пример демонстрира добавяне на елементи към NavigableSet с помощта на add(), където дубликатите се игнорират и елементите се сортират във възходящ ред.
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); } }
Изход
NavigableSet: [A B C]
2. Достъп до елементи: След като добавим елементите, ако искаме да получим достъп до елементите, можем да използваме вградени методи като съдържа () първи() последно() и т.н.
Пример: Този пример демонстрира добавяне на елементи към NavigableSet, проверка за съществуването на елемент и извличане на първия и последния елемент.
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()); } }
Изход
NavigableSet: [A B C] D exists in the NavigableSet?: false First Element of NavigableSet: A Last Element of NavigableSet: C
3. Премахване на елементи: Стойностите могат да бъдат премахнати от NavigableSet с помощта на премахване () pollFirst() pollLast() .
Пример: Този пример демонстрира премахване на елементи от 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); } }
Изход
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. Повтарящи се елементи: Има различни начини за итерация през NavigableSet. Най-известният е да използвате подобрен for цикъл.
Пример: Този пример демонстрира добавяне на елементи към NavigableSet и итерация през него във възходящ ред.
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 + ' '); } }
Изход
A B C D E Z
Методи
По-долу са методите, налични в интерфейса NavigableSet.
Методи | Описание |
|---|---|
| таван (E e) | Връща най-малкия елемент в този набор, по-голям или равен на дадения елемент или нула, ако няма такъв елемент. |
| низходящ итератор() | Връща итератор върху елементите в този набор в низходящ ред. |
| descendingSet() | Връща изглед в обратен ред на елементите, съдържащи се в този набор. |
| етаж (E e) | Връща най-големия елемент в този набор, по-малък или равен на дадения елемент или нула, ако няма такъв елемент. |
| Слушалки (E toElement) | Връща изглед на частта от този набор, чиито елементи са строго по-малко от toElement. |
| HeadSet (E toElement boolean включително) | Връща изглед на частта от този набор, чиито елементи са по-малки от (или равни, ако inclusive е true) toElement. |
| по-висок (E e) | Връща най-малкия елемент в този набор, строго по-голям от дадения елемент или нула, ако няма такъв елемент. |
| итератор() | Връща итератор върху елементите в този набор във възходящ ред. |
| по-нисък (E e) | Връща най-големия елемент в този набор строго по-малък от дадения елемент или нула, ако няма такъв елемент. |
| pollFirst() | Извлича и премахва първия (най-ниския) елемент или връща null, ако този набор е празен. |
| pollLast() | Извлича и премахва последния (най-висок) елемент или връща null, ако този набор е празен. |
subSet(E fromElement boolean fromInclusive E toElement boolean toInclusive) | Връща изглед на частта от този набор, чиито елементи варират от fromElement до toElement. |
| подмножество (E от Елемент E до Елемент) | Връща изглед на частта от този набор, чиито елементи варират от fromElement inclusive до toElement exclusive. |
| tailSet(E fromElement) | Връща изглед на частта от този набор, чиито елементи са по-големи или равни на fromElement. |
| tailSet(E fromElement boolean inclusive) | Връща изглед на частта от този набор, чиито елементи са по-големи от (или равни, ако inclusive е true) fromElement. |
Методи, наследени от интерфейс java.util.SortedSet
Метод | Описание как да изключите режима за разработчици на android |
|---|---|
| компаратор() | Този метод връща компаратора, използван за подреждане на елементите в този набор или нула, ако този набор използва естествения ред на своите елементи. |
| първи() | Този метод връща първия (най-ниския) елемент, присъстващ в този набор. |
| последно() | Този метод връща последния (най-висок) елемент, присъстващ в набора. |
| сплитератор() | Създава Spliterator над елементите в този сортиран набор. |
Методи, наследени от интерфейс java.util.Set
Метод | Описание |
|---|---|
| добавяне (елемент) | Този метод се използва за добавяне на определен елемент към набора. Функцията добавя елемента само ако посоченият елемент вече не присъства в набора, в противен случай функцията връща False, ако елементът вече присъства в набора. |
| addAll(колекция) | Този метод се използва за добавяне на всички елементи от споменатата колекция към съществуващия набор. Елементите се добавят на случаен принцип, без да се спазва определен ред. |
| ясно() | Този метод се използва за премахване на всички елементи от набора, но не и за изтриване на набора. Справката за комплекта все още съществува. |
| съдържа (елемент) | Този метод се използва за проверка дали определен елемент присъства в набора или не. |
| съдържа Всички (колекция) | Този метод се използва за проверка дали наборът съдържа всички елементи, присъстващи в дадената колекция или не. Този метод връща true, ако наборът съдържа всички елементи и връща false, ако някой от елементите липсва. |
| равно на () | Сравнява посочения обект с този набор за равенство. |
| hashCode() | Този метод се използва за получаване на стойността на hashCode за този екземпляр на Set. Той връща целочислена стойност, която е стойността на hashCode за този екземпляр на Set. |
| isEmpty() | Този метод се използва за проверка дали NavigableSet е празен или не. |
| премахване (елемент) | Този метод се използва за премахване на даден елемент от набора. Този метод връща True, ако посоченият елемент присъства в Set, в противен случай връща False. |
| премахване на всички (колекция) | Този метод се използва за премахване на всички елементи от колекцията, които присъстват в набора. Този метод връща true, ако този набор се промени в резултат на извикването. |
| retainAll(колекция) | Този метод се използва за запазване на всички елементи от набора, които са споменати в дадената колекция. Този метод връща true, ако този набор се промени в резултат на извикването. |
| размер () | Този метод се използва за получаване на размера на комплекта. Това връща цяло число, което означава броя на елементите. |
| toArray() | Този метод се използва за формиране на масив от същите елементи като този на Set. |
| toArray(T[] a) | Връща масив, съдържащ всички елементи в този набор; типът по време на изпълнение на върнатия масив е този на посочения масив. |
Методи, декларирани в интерфейс java.util.Collection
| Метод | Описание |
|---|---|
| parallelStream() | Връща евентуално паралелен поток с тази колекция като негов източник. |
| removeIf(Предикат super E>филтър) | Премахва всички елементи от тази колекция, които отговарят на дадения предикат. |
| поток () | Връща последователен поток с тази колекция като негов източник. |
| toArray?(IntFunction | Връща масив, съдържащ всички елементи в тази колекция, като използва предоставената генераторна функция за разпределяне на върнатия масив. |
Методи, декларирани в интерфейс java.lang.Iterable
| Метод | Описание |
|---|---|
| forEach(Потребител super T>действие) | Извършва даденото действие за всеки елемент от Iterable, докато всички елементи бъдат обработени или действието хвърли изключение. |