与HashMap相比,TreeMap是一个能比较元素大小的Map集合,会对传入的key进行了大小排序。可以使用元素的自然顺序,也可以使用集合中自定义的比较器来进行排序;
不同于HashMap的哈希映射,TreeMap底层实现了红黑树的结构,形成了一颗二叉树。
TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable 构造函数: 1. 不太比较器,使用key的自然排序public TreeMap() {2. 指定使用的比较器进行比较
comparator = null;
}
public TreeMap(Comparator<? super K> comparator) {3. 把Map转成TreeMap
this.comparator = comparator;
}
public TreeMap(Map<? extends K, ? extends V> m) {4. 把SortedMap转成TreeMap
comparator = null;
putAll(m);
}
public TreeMap(SortedMap<K, ? extends V> m) {常用的APIs: 1. firstKey() : 红黑树的最左侧元素的key, 2. firstEntry:红黑树的最左侧元素。 3. lastKey(): 红黑树的最右侧元素的key, 4. lastEntry(): 红黑树的最右侧元素。 5. getEntry(Object key): 获取指定的key的元素 6. getCeilingEntry(K key):
comparator = m.comparator();
try {
buildFromSorted(m.size(), m.entrySet().iterator(), null, null);
} catch (java.io.IOException cannotHappen) {
} catch (ClassNotFoundException cannotHappen) {
}
}
返回大于或者等于key的第一个元素
7. getFloorEntry(K key): 返回小于等于key的第一个元素
8. getHigherEntry(K key): 返回大于key的第一个元素
9. getLowerEntry(K key): 返回小于key的第一个元素
10. pollFirstEntry(): 获取并删除树的最左侧的第一个元素
11. pollLastEntry(): 获取并删除树的左右侧的第一个元素
12. put(K key, V value): 添加元素
13. get(Object key): 查找key的元素,找不到返回null