java.util.NavigableSet 接口是java.util.SortedSet接口的子接口,它的行为特点和SortedSet类似。
除了拥有SortedSet的排序同能外还有一系列的导航方法。
在java6中NavigableSet只有TreeSet这一个实现类。
descendingIterator() and descendingSet()
NavigableSet original = new TreeSet();
// add somedata...
NavigableSet reverse = original.descendingSet();
descendingSet()方法返回一个与originall顺序相反的一个set集合。
返回的reverse集合是依靠original存在的,如果改变了reverse集合中的元素
同时也会对original中产生影响。
Iterator reverse = original.descendingIterator();
descendingIterator()方法允许你以迭代的方式去操作set集合并且并且不会改变集合内部顺序。
headSet(),tailSet()和subSet()
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(),higher()和lower()
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()和pollLst()
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();