Map之TreeMap

与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() {
comparator = null;
}
2. 指定使用的比较器进行比较
public TreeMap(Comparator<? super K> comparator) {
this.comparator = comparator;
}
3. 把Map转成TreeMap
public TreeMap(Map<? extends K, ? extends V> m) {
comparator = null;
putAll(m);
}
4. 把SortedMap转成TreeMap
public TreeMap(SortedMap<K, ? extends V> m) {
comparator = m.comparator();
try {
buildFromSorted(m.size(), m.entrySet().iterator(), null, null);
} catch (java.io.IOException cannotHappen) {
} catch (ClassNotFoundException cannotHappen) {
}
}
  常用的APIs: 1. firstKey() : 红黑树的最左侧元素的key,  2. firstEntry:红黑树的最左侧元素。 3. lastKey(): 红黑树的最右侧元素的key,  4. lastEntry(): 红黑树的最右侧元素。 5. getEntry(Object key): 获取指定的key的元素  6. getCeilingEntry(K key): 返回大于或者等于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  
上一篇:HashMap总结


下一篇:普通Hash与一致性Hash