Java 6對Nevigable接口做了一些改進(jìn)。具體的看以下例子:
例如一個渡口有一個不定期的時刻表,我們將每日離港的時間保存在TreeSet中,那么,如果我們想獲得下午4點(diǎn)前離開的最后一班渡輪(1600)和下午8殿后離開的最早一班渡輪(2000),應(yīng)該怎么實(shí)現(xiàn)呢?
TreeSet<Integer> times = new TreeSet<Integer>();
times.add(1205);
times.add(1505);
times.add(1545);
times.add(1830);
times.add(2010);
times.add(2100);
Java 5中可以這樣獲得:
TreeSet<Integer> subset = new TreeSet<Integer>();
subset = (TreeSet)times.headSet(1600);
System.out.println("the last before 4pm:" + subset.last());
TreeSet<Integer> subset2 = new TreeSet<Integer>();
subset2 = (TreeSet)times.tailSet(2000);
System.out.println("the last before 8pm:" + subset.last());
在Java 6中,可以更加方便:
System.out.println("the last before 4pm:" + times.lower(1600));
System.out.println("the last before 8pm:" + times.higher(2000));
對NavigableSet有四個方法:lower(), floor(),higher()和ceiling()。
lower和floor的區(qū)別是,lower是比給定元素小的元素,而floor是小于或等于的。higher和ceiling類似。對于
NavigableMap也有四個方法: lowerKey(), floorKey(), ceilingKey()和higherKey()。