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