Интерфейс NavigableSet
Интерфейс NavigableSet<E>, появившийся в Java SE 6, расширяет интерфейс SortedSet и добавляют возможность перемещения по отсортированной коллекции. Класс TreeSet<E> был модернизирован для поддержки этого интерфейса.
Методы интерфейса NavigableSet<E>:
Следующие методы возвращают итераторы коллекции в порядке возрастания и убывания элементов соответственно.
Iterator iterator() – возвращает итератор в порядке возрастания значений элементов коллекции;
Iterator descendingIterator() – возвращает итератор в порядке убывания значений элементов коллекции;
NavigableSet descendingSet() – возвращает множество в порядке убывания значений элементов коллекции;
E lower(E e) – возвращает меньший по значению элемент для вызывающего элемента;
E floor(E e) – возвращает меньший или равный по значению элемент для вызывающего элемента;
E higher(E e) – возвращает больший по значению элемент для вызывающего элемента;
E ceiling(E e) – возвращает больший или равный по значению элемент для вызывающего элемента;
E pollFirst() – возвращает и удаляет первый элемент коллекции;
E pollLast() – возвращает и удаляет последний элемент коллекции;
SortedSet<E> subSet(E fromElement, E toElement) –возвращает список элементов, находящихся между fromElement и toElement, причем последний не включается;
NavigableSet subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) – ;
И, наконец, методы, позволяющие получить подмножество элементов. Параметры fromElement и toElement ограничивают подмножество снизу и сверху, а флаги fromInclusive и toInclusive показывают, нужно ли в результирующий набор включать граничные элементы. headSet возвращает элементы с начала набора до указанного элемента, а tailSet - от указанного элемента до конца набора. Перегруженные методы без логических параметров включают в выходной набор первый элемент интервала, но исключают последний.
NavigableSet headSet(E toElement, boolean inclusive);
NavigableSet tailSet(E fromElement, boolean inclusive);
SortedSet subSet(E fromElement, E toElement);
SortedSet headSet(E toElement);
SortedSet tailSet(E fromElement);
Метод. Методы headSet(E element) и tailSet(E element, boolean inclusive) возвращают то множество элементов, которое меньше либо больше element соответственно. Если inclusive равно true, то элемент включается в найденное множество и не включается в противном случае.
В следующем примере показано использование интерфейса NavigableSet.
/* # 13 : иcпользование множества NavigableSet: NavigableSetTest.java */
package by.bsu.chapt10;
import java.util.*;
public class NavigableSetTest {
public static void main(String[] args) {
HashSet<String> city = new HashSet<String>();
city.add("Minsk");
city.add("Mosсow");
city.add("Polotsk");
city.add("Brest");
NavigableSet<String> ns = new TreeSet<String>(city);
System.out.println("All: " + ns);
System.out.println("Between Minsk and Polotsk: "
+ ns.subSet("Minsk","Polotsk"));
System.out.println("Before Minsk: "
+ ns.headSet("Minsk"));
System.out.println("After Minsk: "
+ ns.tailSet("Minsk",false));
}
}
В результате на консоль будет выведено:
All: [Brest, Minsk, Mosсow, Polotsk]
Between Minsk and Polotsk: [Minsk, Mosсow]
Before Minsk: [Brest]
After Minsk: [Mosсow, Polotsk]
