logo

NavigableSet в Java

В 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, свързана с набори.

NavigableSet-in-Java-with-Examples' title=

TreeSet е клас, който имплементира NavigableSet което от своя страна разширява SortedSet което разширява Комплект .

java колекция рамка

Декларация на NavigableSet

В Java декларацията на NavigableSet може да бъде декларирана като:

NavigableSetsetName;

Забележка: ' Type' е типът на елемента в набора (напр. цял низ и т.н.), а setName е името на променливата.

Създаване на NavigableSet обекти

Не можем да създадем NavigableSet директно, тъй като това е интерфейс. Вместо това използваме клас като TreeSet който го прилага. С помощта на генерики можем да дефинираме типа обекти, които наборът ще съхранява. Този тип безопасен набор може да се дефинира като:

NavigableSetset = нов 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());  } } 

Изход:

Изход' loading='lazy' title=

Извършване на различни операции върху 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(Предикатфилтър)Премахва всички елементи от тази колекция, които отговарят на дадения предикат.
поток ()Връща последователен поток с тази колекция като негов източник.
toArray?(IntFunctionгенератор)Връща масив, съдържащ всички елементи в тази колекция, като използва предоставената генераторна функция за разпределяне на върнатия масив.

Методи, декларирани в интерфейс java.lang.Iterable

МетодОписание
forEach(Потребителдействие) Извършва даденото действие за всеки елемент от Iterable, докато всички елементи бъдат обработени или действието хвърли изключение.