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();