java.util.NavigableSet 接口是java.util.SortedSet接口的子接口,它的行为特色和SortedSet相似。java
除了拥有SortedSet的排序同能外还有一系列的导航方法。
spa
在java6中NavigableSet只有TreeSet这一个实现类。code
NavigableSet original = new TreeSet(); // add somedata... NavigableSet reverse = original.descendingSet();
descendingSet()方法返回一个与originall顺序相反的一个set集合。
排序
返回的reverse集合是依靠original存在的,若是改变了reverse集合中的元素接口
同时也会对original中产生影响。ast
Iterator reverse = original.descendingIterator();
descendingIterator()方法容许你以迭代的方式去操做set集合而且而且不会改变集合内部顺序。class
NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); // 返回元素"3"以前的全部元素集合 "headset 包含 "1","2" // 返回的headset与original中存储的数据其实有着相同的引用 // 因此对headset的改变会做用到original上。 SortedSet headset = original.headSet("3"); // boolean 类型参数表明是否包含本元素 // headset 包含 "1","2","3" NavigableSet headset = original.headSet("3",true);
tailSet()方法工做原理headSet()方法一致,它返回的是比传入元素更大的集合。原理
subSet()方法则容许传入两个集合中的元素来肯定起始与结束位置
引用
NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); original.add("4"); original.add("5"); // subset 中只包含"2","3" SortedSet subset = original.subSet("2","4"); // subset 中将包含"2","3","4" NavigableSet subset = original.subSet("2",true,"4",true);
ceiling()方法将返回大于等于给定元素的全部元素中最小的一个元素。
方法
floor()方法则与ceiling()相反,它返回一个小于等于指定元素的全部元素中最大的一个元素。
NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); // ceilling = "2" Object ceiling = original.ceiling("2"); // floor = "2" Object floor = original.floor("2");
higher()方法返回大于指定元素中全部元素最小的一个元素
lower()方法与higher()相反,它返回小于指定元素中全部元素最大的一个
NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //higher = "3". Object higher = original.higher("2"); //lower = "1" Object lower = original.lower("2");
pollFirst()方法返回而且删除在NavigableSet中第一个元素,若是集合为空则返回null
pollLst()方法则返回而且删除NavigableSet中最后一个元素,集合为空也返回null
NavigableSet original = new TreeSet(); original.add("1"); original.add("2"); original.add("3"); //first = "1" Object first = original.pollFirst(); //last = "3" Object last = original.pollLast();