- A
TreeSet
将元素置于自然排序或通过提供的 比较器。 - A
SortedSet
也使元素保持自然顺序
但是它们之间有什么区别,NavigableSet?
在哪里NavigableSets
有用?
一些显示其用法的示例对初学者来说会很好。
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 中不可用。
我希望您会发现以下Java 文档摘录对您有用(请参阅更多详细信息的链接):
方法lower、floor、ceiling和Higher 分别返回小于、小于或等于、大于或等于和大于给定元素的元素。
TreeSet 实现了 NavigableSet,并且(接口)NavigableSet 扩展了 SortedSet
I feel this
is a well demonstrated reference with decent explanation.
NavigableSet 增加了诸如descendingIterator() 和descendingSet(), 天花板(), floor(), Higher(), lower(), headSet(), tailSet(), subSet(), pollFirst() 和pollLast() 等导航方法。