TreeMap中的floorKey()和ceilingKey()
1. 介绍
我们先看一看TreeMap类,实现了众多接口,它的这两个方法来自NavigableMap类:
public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable {
...}
先看一看NavigableMap类中的floorKey()和ceilingKey()的API:
类型 | 方法 | 描述 |
---|---|---|
K | ceilingKey(K key) | 返回大于或等于给定键的最小键,如果没有这样的键,则null |
K | floorKey(K key) | 返回小于或等于给定键的最大键,如果没有这样的键,则null |
而TreeMap中的这两个方法描述也是一样的,具体看一下源码,floorKey:
//floorKey(K key)
public K floorKey(K key) {
return keyOrNull(getFloorEntry(key));
}
//getFloorEntry(K key)
final Entry<K,V> getFloorEntry(K key) {
Entry<K,V> p = root;
while (p != null) {
int cmp = compare(key, p.key);
if (cmp > 0) {
if (p.right != null)
p = p.right;
else
return p;
} else if (cmp < 0) {
if