Map之TreeMap
与HashMap相比,TreeMap是一个能比较元素大小的Map集合,会对传入的key进行了大小排序。可以使用元素的自然顺序,也可以使用集合中自定义的比较器来进行排序;
不同于HashMap的哈希映射,TreeMap底层实现了红黑树的结构,形成了一颗二叉树。
TreeMappublic 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常用的APIs: 1. firstKey() : 红黑树的最左侧元素的key, 2. firstEntry:红黑树的最左侧元素。 3. lastKey(): 红黑树的最右侧元素的key, 4. lastEntry(): 红黑树的最右侧元素。 5. getEntry(Object key): 获取指定的key的元素 6. ceilingEntry(K key):m) {
comparator = m.comparator();
try {
buildFromSorted(m.size(), m.entrySet().iterator(), null, null);
} catch (java.io.IOException cannotHappen) {
} catch (ClassNotFoundException cannotHappen) {
}
}
返回大于或者等于key的第一个元素, ceilingKey() 返回大于或者等于key的第一个元素key
7. floorEntry(K key): 返回小于等于key的第一个元素 floorKey() 返回小于等于key的第一个元素的key
8. higherEntry(K key): 返回大于key的第一个元素 higherKey() 返回大于key的第一个元素的key
9. lowerEntry(K key): 返回小于key的第一个元素 lowerKey(), 返回小于key的第一个元素的key
10. pollFirstEntry(): 获取并删除树的最左侧的第一个元素
11. pollLastEntry(): 获取并删除树的最右侧的第一个元素
12. put(K key, V value): 添加元素
13. get(Object key): 查找key的元素,找不到返回null