Разница между navigableSet, SortedSet и TreeSet в Java?

TreeSet помещает элемент в natural ordering или предоставленный comparator.

A sortedSet также сохраняет элемент в естественном порядке

но в чем разница между ними и navigableSet?

где navigableSets полезно? некоторый пример, чтобы показать его использование было бы хорошо для новичков.

Ответ 1

SortedSet - это интерфейс (он определяет функциональность), а Treeset - это реализация. NavigableSet также является подтипом интерфейса SortedSet.

Вы не можете просто написать SortedSet<Integer> example = new SortedSet<Integer>();

Однако вы можете написать SortedSet<Integer> example = new TreeSet<Integer>();

Как следует из его названия, NavigableSets более полезны для навигации по набору.

http://mrbool.com/overview-on-navigableset-subtype-of-java-collections/25417 предлагает хороший учебник по NavigableSets и некоторые из доступных при его использовании методов, которые недоступны в SortedSet.

Ответ 2

Надеюсь, вы найдете полезную выдержку из Java docs (см. ссылку на более подробную информацию):

Методы ниже, пол, потолок и вышевозвратные элементы соответственно меньше, меньше или равны, больше чем или равно, и больше, чем данный элемент.

Ответ 3

Я чувствую this - это хорошо продемонстрированная ссылка с приличным объяснением.

Ответ 4

NavigableSet добавляет методы навигации, такие как descendingIterator() и descendingSet(), top(), floor(), upper(), lower(), headSet(), tailSet(), subSet(), pollFirst() и pollLast ().

Ответ 5

TreeSet реализует NavigableSet и (интерфейс) NavigableSet extends SortedSet