Java集合<7> (NavigableSet)

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


你可能感兴趣的:(Java集合<7> (NavigableSet))