Освоение интерфейса NavigableSet в Java: навигация, сортировка и практические примеры
Интерфейс NavigableSet в Java
В этом руководстве мы изучим интерфейс NavigableSet фреймворка Java Collections и его методы на практике.
Интерфейс NavigableSet предоставляет функциональность для навигации среди элементов множества. Он является разновидностью SortedSet.
Класс, реализующий NavigableSet
Для использования функциональности NavigableSet нужно применять класс TreeSet, который реализует этот интерфейс.
Как использовать NavigableSet
В Java необходимо импортировать пакет java.util.NavigableSet. После импорта навигационные множества создаются так:
// Реализация SortedSet через TreeSet
NavigableSet<String> numbers = new TreeSet<>();
Здесь создано навигационное множество numbers класса TreeSet.
Методы NavigableSet
NavigableSet считается разновидностью SortedSet, так как расширяет этот интерфейс. Поэтому все методы SortedSet доступны и в NavigableSet. Однако некоторые методы SortedSet (headSet(), tailSet() и subSet()) в NavigableSet определены иначе.
headSet(element, booleanValue)
Метод headSet() возвращает все элементы навигационного множества перед указанным element. Параметр booleanValue опционален (по умолчанию false). Если передано true, возвращаются элементы до указанного включительно.
tailSet(element, booleanValue)
Метод tailSet() возвращает все элементы после указанного element включительно. Параметр booleanValue опционален (по умолчанию true). Если передано false, указанный элемент не включается.
subSet(e1, bv1, e2, bv2)
Метод subSet() возвращает элементы между e1 и e2 включительно по e1. Параметры bv1 и bv2 опциональны (по умолчанию true и false соответственно). false для bv1 исключает e1, true для bv2 включает e2.
Методы для навигации
NavigableSet предоставляет методы для навигации по элементам:
- descendingSet() — возвращает множество в обратном порядке.
- descendingIterator() — итератор для обхода в обратном порядке.
- ceiling() — наименьший элемент ≥ заданного.
- floor() — наибольший элемент ≤ заданного.
- higher() — наименьший элемент > заданного.
- lower() — наибольший элемент < заданного.
- pollFirst() — возвращает и удаляет первый элемент.
- pollLast() — возвращает и удаляет последний элемент.
Реализация NavigableSet в классе TreeSet
import java.util.NavigableSet;
import java.util.TreeSet;
class Main {
public static void main(String[] args) {
// Создаём NavigableSet через TreeSet
NavigableSet<Integer> numbers = new TreeSet<>();
// Добавляем элементы
numbers.add(1);
numbers.add(2);
numbers.add(3);
System.out.println("NavigableSet: " + numbers);
// Обращаемся к первым и последним элементам
int firstElement = numbers.first();
System.out.println("Первый элемент: " + firstElement);
int lastElement = numbers.last();
System.out.println("Последний элемент: " + lastElement);
// Удаляем первый и последний элементы
int number1 = numbers.pollFirst();
System.out.println("Удалён первый элемент: " + number1);
int number2 = numbers.pollLast();
System.out.println("Удалён последний элемент: " + number2);
}
}
Вывод
NavigableSet: [1, 2, 3] Первый элемент: 1 Последний элемент: 3 Удалён первый элемент: 1 Удалён последний элемент: 3
Теперь, когда мы знаем об интерфейсе NavigableSet, мы изучим его реализацию с помощью класса TreeSet.
java
- Освоение интерфейсов в C#: определение, реализация и практические примеры
- Освоение операторов Java: типы, синтаксис и практические примеры
- Комментарии в Java: типы, использование и лучшие практики
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Try-with-resources в Java: автоматическое управление ресурсами
- Аннотации в Java: типы, размещение и практические примеры
- Освоение Java Lambda-выражений: от основ к Stream API
- Интерфейс vs Абстрактный класс в Java: Как выбрать правильную абстракцию
- Интерфейсы в Java: определение, использование и лучшие практики
- Java 9 Private Interface Methods: инкапсуляция и повторное использование кода