欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

【Java】java.util.NavigableSet 接口使用示例,,NavigableSet

来源: javaer 分享于  点击 4766 次 点评:154

【Java】java.util.NavigableSet 接口使用示例,,NavigableSet


NavigableSet 扩展 SortedSet,具有了为给定搜索目标报告最接近匹配项的导航方法。方法 lower、floor、ceiling 和 higher 分别返回小于、小于等于、大于等于、大于给定元素的元素,如果不存在这样的元素,则返回 null。可以按升序或降序访问和遍历 NavigableSet。descendingSet 方法返回 set 的一个视图,该视图表示的所有关系方法和方向方法都是逆向的。升序操作和视图的性能很可能比降序操作和视图的性能要好。此外,此接口还定义了 pollFirst 和 pollLast 方法,它们返回并移除最小和最大的元素(如果存在),否则返回 null。subSet、headSet 和 tailSet 方法与名称相似的 SortedSet 方法的不同之处在于:可以接受用于描述是否包括(或不包括)下边界和上边界的附加参数。任何 NavigableSet 的 Submap 必须实现 NavigableSet 接口。

导航方法的返回值在允许 null 元素的实现中可能是不确定的。不过,即使在这种情况下,也可以通过检查 contains(null) 来明确结果。为了避免这样的问题,建议在此接口的实现中不 允许插入 null 元素。(注意,Comparable 元素的有序集本身不允许 null。)

subSet(E, E)、headSet(E) 和 tailSet(E) 方法被指定为返回 SortedSet,以允许现有 SortedSet 实现能相容地改进为实现 NavigableMap,但鼓励此接口的扩展和实现重写这些方法以返回 NavigableSet。

此接口是 Java Collections Framework 的成员。

代码片段:

import java.util.Arrays;import java.util.Iterator;import java.util.List;import java.util.NavigableSet;import java.util.TreeSet;public class NavigableSetDemo {  public static void main(String[] args) {    List<Integer> list = Arrays.asList(3, 2, 4, 1, 5);    NavigableSet<Integer> ns = new TreeSet<Integer>(list);    System.out.println("Ascending order (default): " + ns);    Iterator<Integer> descendingIterator = ns.descendingIterator();    StringBuilder sb = new StringBuilder("Descending order: ");    while (descendingIterator.hasNext()) {      int m = descendingIterator.next();      sb.append(m + " ");    }    System.out.println(sb);    int greatest = ns.lower(3);    System.out.println("Lower of 3 = " + greatest);    int smallest = ns.higher(3);    System.out.println("Higher of 3 = " + smallest);  }}/*Ascending order (default): [1, 2, 3, 4, 5]Descending order: 5 4 3 2 1Lower of 3 = 2Higher of 3 = 4*/
相关栏目:

用户点评