爱笑的姑娘|Java集合-NavigableMap
NavigableMap(java.util.NavigableMap)接口是SortedMap的子接口 , 但是 NavigableMap接口中新加了几个SortedSet接口中没有的方法 , 使导航存储在映射中的键和值成为可能 , 本文会讲解 。
NavigableMap的实现既然是接口 , 那就必须用到它的实现 , java.util包中只有一个实现 java.util.TreeMap, 另外java.util.concurrent包中也有实现 , 但是本文不讲解 。
创建NavigableMap为了创建NavigableMap, 则必须使用它实现的实例 , 下面是代码:
NavigableMap navigableMap = new TreeMap();使用Comparator创建NavigableMap可以使用Comparator得实现作为TreeMap构造函数得参数 ,然后 , 这个Comparator 将用于对存储在NavigableMap中的键、值对的键进行排序:
Comparator comparator = new MyComparatorImpl(); SortedMap sortedMap = new TreeMap(comparator);descendingKeySet()返回一个所有key键的视图 , 顺序是倒序:
NavigableSet reverse = map.descendingKeySet();descendingMap()返回一个与原map反向顺序的视图 , 仍然是同一个map , 操作会互相影响:
NavigableMap descending = map.descendingMap();headMap()返回小于第一个参数的键值对的视图(如果第二个参数为true代表包含等于):
NavigableMap original = new TreeMap();original.put("1", "1");original.put("2", "2");original.put("3", "3"); //this headmap1 will contain "1" and "2"SortedMap headmap1 = original.headMap("3"); //this headmap2 will contain "1", "2", and "3" because "inclusive"=trueNavigableMap headmap2 = original.headMap("3", true);tailMap()tailMap()方法和headMap()方法很小 , 除了返回的大于等会给定key的视图:
NavigableMap navigableMap = new TreeMap(); navigableMap.put("a", "1");navigableMap.put("c", "3");navigableMap.put("e", "5");navigableMap.put("d", "4");navigableMap.put("b", "2"); SortedMap tailMap = navigableMap.tailMap("c");tailMap的值是包含了key为"c", "d" 和 "e"的键值对的SortedMap,因为这些key的值大于等于"c" 。
subMap()返回fromKey到toKey的map视图 , 通过fromInclusive与toInclusive控制是否包含:
NavigableMap original = new TreeMap();original.put("1", "1");original.put("2", "2");original.put("3", "3");original.put("4", "4");original.put("5", "5"); //this submap1 will contain "3", "3"SortedMapsubmap1= original.subMap("2", "4"); //this submap2 will contain ("2", "2") ("3", "3") and ("4", "4") because//fromInclusive=true, and toInclusive=trueNavigableMap submap2 = original.subMap("2", true, "4", true);ceilingKey()返回最接近的大于等于key的键:
NavigableMap original = new TreeMap();original.put("1", "1");original.put("2", "2");original.put("3", "3");//ceilingKey will be "2".Object ceilingKey = original.ceilingKey("2");floorKey()floorKey()方法和ceilingKey()方法相对应 , 返回小于且最接近key的键(包含等于):
NavigableMap original = new TreeMap();original.put("1", "1");original.put("2", "2");original.put("3", "3"); //floorKey will be "2".Object floorKey = original.floorKey("2");floorKey的接口将是2 , 因为对应的key"2"小于或者等于 "2" 。
higherKey()返回最接近的大于key的键:
NavigableMap original = new TreeMap();original.put("1", "1");original.put("2", "2");original.put("3", "3");//higherKey will be "3".Object higherKey = original.higherKey("2");
推荐阅读
- 肉|全小区都认识她,24,岁姑娘家一直亮红光
- 搬砖的四眼仔|邓文迪哪像奔六的人,干瘦身材穿“套圈裙”,曲线和小姑娘不差啥
- 多肉|姑娘家亮紫红光:全小区都知道她干啥
- 笑星坊|姑娘你这是金脸啊,搞笑GIF:卸妆原来还是个体力活动
- 笑个锤子|看好你男朋友,防着点这位好闺蜜吧!,搞笑图片:姑娘
- 伴娘|找不到就租吧!姑娘为陌生人当6次伴娘
- Java|淘宝商家要小心了!取消的“中差评”体系又回来啦!
- 爱上搞笑菌|端庄靓丽,心生向往,开心笑话:航班上俺旁边坐一姑娘
- 小悦爱搞笑|对面坐了一姑娘,路上饿了开始吃烧鸡,开心一笑:坐火车回家
- 笑星坊|说好的一鼓作气呢,咋半路还停下了,搞笑GIF图:姑娘
