在 Java 中获取某个范围内键的值
假设我在Java中有一个地图,看起来像这样:
{
39:"39 to 41",
41:"41 to 43",
43:"43 to 45",
45:">=45"
}
如果键按排序顺序排列(使用树状图或链接哈希映射)。现在,如果我尝试获取一个值,该值> = 39并<41.那么我应该获得字符串“39到41”。如何有效地执行此操作?
假设我在Java中有一个地图,看起来像这样:
{
39:"39 to 41",
41:"41 to 43",
43:"43 to 45",
45:">=45"
}
如果键按排序顺序排列(使用树状图或链接哈希映射)。现在,如果我尝试获取一个值,该值> = 39并<41.那么我应该获得字符串“39到41”。如何有效地执行此操作?
看起来你想要的不仅仅是一个排序的地图
;你想要一个可导航的地图
!具体来说,您可以使用 floorKey
操作。
下面是一个示例:
NavigableMap<Integer,String> map =
new TreeMap<Integer, String>();
map.put(0, "Kid");
map.put(11, "Teens");
map.put(20, "Twenties");
map.put(30, "Thirties");
map.put(40, "Forties");
map.put(50, "Senior");
map.put(100, "OMG OMG OMG!");
System.out.println(map.get(map.floorKey(13))); // Teens
System.out.println(map.get(map.floorKey(29))); // Twenties
System.out.println(map.get(map.floorKey(30))); // Thirties
System.out.println(map.floorEntry(42).getValue()); // Forties
System.out.println(map.get(map.floorKey(666))); // OMG OMG OMG!
请注意,还有 、 、 和,以及返回 a 而不仅仅是 的操作。ceilingKey
lowerKey
higherKey
…Entry
…Key
Map.Entry<K,V>
K
试试 Java 6 。http://download.oracle.com/javase/6/docs/api/java/util/NavigableMap.html。java.util.NavigableMap
特殊用途 /.floorKey
floorEntry
例如:应返回 。floorEntry 将返回您要查找的值。floorKey(40)
39