java.util.NavigableSet和NavigableMap

Java 6对Nevigable接口做了一些改进。具体的看以下例子:

例如一个渡口有一个不定期的时刻表,我们将每日离港的时间保存在TreeSet中,那么,如果我们想获得下午4点前离开的最后一班渡轮(1600)和下午8殿后离开的最早一班渡轮(2000),应该怎么实现呢?

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的区别是,lower是比给定元素小的元素,而floor是小于或等于的。higher和ceiling类似。对于 NavigableMap也有四个方法: lowerKey(), floorKey(), ceilingKey()和higherKey()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值