Java集合-NavigableSet

NavigableSetjava.util.NavigableSet)接口是 SortedSet 接口的一个子接口。因此, NavigableSet和SortedSet很相似,但是,除了SortedSet的排序机制之外,还提供了一组额外的导航方法,本篇文章将讲述NavigableSet的这些导航方法。

NavigableSet的实现

Java 6 13NavigableSet java.util包中只有一个实现类java.util.TreeSet类,java.util.concurrent中也有一个实现ConcurrentSkipListSet,本文暂时不讲述。

创建NavigableSet

创建NavigableSet 必须创建 NavigableSet接口的一个实例,我们使用 TreeSet 

 
NavigableSet navigableSet = new TreeSet();

descendingSet()

descendingSet()方法的作用是:返回一个NavigableSet,其中元素的顺序与原来的NavigableSet相反,返回的“view”由原始NavigableSet支持,因此对降序集的更改也会反映在原始集合中,下面是例子:

 
NavigableSet reverse = original.descendingSet();

descendingIterator()

descendingIterator()方法允许方向迭代 NavigableSet (SortedSet一样) 中的元素,而不改变其内部本身的元素:

 
Iterator reverse = original.descendingIterator();    

headSet()

headSet()方法返回 NavigableSet的一个视图,这里面的元素小于给定的元素 

NavigableSet original = new TreeSet();
original.add("1");
original.add("2");
original.add("3");

//this headset will contain "1" and "2"
SortedSet headset = original.headSet("3");

//this headset will contain "1", "2", and "3" because "inclusive"=true
NavigableSet headset = original.headSet("3", true);

 

tailSet()

tailSet()方法和 headSet()方法很相似,除了一点是大于等于给点的元素:

NavigableSet original = new TreeSet();
original.add("1");
original.add("2");
original.add("3");

//this tailSet will contain "2" and "3"
SortedSet tailSet = original.tailSet("2");

//this tailSet will contain "3" only because "inclusive"=false
NavigableSet tailSet = original.tailSet("2", false);
 

subSet()

subSet()方法允许传入两个参数,返回一个限定范围的视图,这个视图包括第一个参数,不包括第二个参数:

NavigableSet original = new TreeSet();
original.add("1");
original.add("2");
original.add("3");
original.add("4");
original.add("5");

//this subset will contain "2" and "3"
SortedSet    subset  = original.subSet("2", "4");

//this subset will contain "2", "3" and "4" because
//    fromInclusive=true, and toInclusive=true 
NavigableSet subset = original.subSet("2", true, "4", true);

 

ceiling()

ceiling()方法返回此set中大于或等于给定元素的最小元素

NavigableSet original = new TreeSet();
original.add("1");
original.add("3");
original.add("5");

//ceiling will be "3".
Object ceiling = original.ceiling("2");

 

floor()

floor()方法和 ceiling()方法对应,返回此集合中小于或等于给定元素的最大元素

NavigableSet original = new TreeSet();
original.add("1");
original.add("3");
original.add("5");

//floor will be "1".
Object floor = original.floor("2");

 

higher()

higher()方法返回此set中大于给定元素的最小元素 

NavigableSet original = new TreeSet();
original.add("1");
original.add("2");
original.add("3");


//higher will be "3".
Object higher = original.higher("2");

 

lower()

lower()方法和higher()方法相对应,返回此set中小于给定元素的最大元素

NavigableSet original = new TreeSet();
original.add("1");
original.add("2");
original.add("3");

//lower will be "1"
Object lower = original.lower("2");

 

pollFirst()

pollFirst()返回并且移除 NavigableSet中的第一个元素,如果集合是空返回null: 

NavigableSet original = new TreeSet();
original.add("1");
original.add("2");
original.add("3");


//first is "1"
Object first = original.pollFirst();

 

pollLast()

pollLast()返回和移除 NavigableSet中的最后一个元素:

NavigableSet original = new TreeSet();
original.add("1");
original.add("2");
original.add("3");

//last is "3"
Object last = original.pollLast();

 

参考:1. https://blog.csdn.net/cgsyck/article/details/108377431

          2. http://tutorials.jenkov.com/java-collections/navigableset.html

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值