TreeMap总结
1 概述
TreeMap是Map接口的一个实现类,可以实现存储元素的自动排序。在TreeMap中,键值对之间按键有序,TreeMap的实现基础是平衡二叉树,也称红黑树。
2 构造函数
- TreeMap():无参的空构造函数,所有键插入有序。
- TreeMap(Comparator<? super K> comparator):指定元素排序所用的比较器,key排列顺序由比较器指定。
- TreeMap(Map<? extends K, ? extends V> m):用指定Map填充TreeMap,所有键按照自然排序。
- TreeMap(SortedMap<K,? extends V> m):该TreeMap包含与指定的SortedMap相同的映射,并使用相同的顺序。
3 常用方法
方法 | 功能描述 |
---|---|
put(K key, V value) | 该方法用于添加一个Entry到TreeMap对象,key,value;如果key对应的值已经存在,则将key对应的值修改为value |
putAll(Map map) | 将指定map放入该TreeMap中 |
void clear() | 清空TreeMap中的所有元素 |
V remove(Object key) | 从TreeMap中移除指定key对应的映射,返回与key关联的值,如果没有映射,返回null |
V replace(K key, V value) | 替换指定key对应的value |
boolean replace(K key, V oldValue, V newValue) | 当指定key的对应的value为指定值时,替换该值为新值 |
boolean containsKey(Object key) | 判断该TreeMap中是否包含指定key的映射 |
boolean containsValue(Object value) | 判断该TreeMap中是否包含有关指定value的映射 |
Map.Entry<K, V> firstEntry() | 返回该TreeMap的第一个(最小的)映射 |
K firstKey() | 返回该TreeMap的第一个(最小的)映射的key |
Map.Entry<K, V> lastEntry() | 返回该TreeMap的最后一个(最大的)映射 |
K lastKey() | 返回该TreeMap的最后一个(最大的)映射的key |
v get(K key) | 返回指定key对应的value |
SortedMap<K, V> headMap(K toKey) | 返回该TreeMap中严格小于指定key的映射集合 |
SortedMap<K, V> subMap(K fromKey, K toKey) | 返回该TreeMap中指定范围的映射集合(大于等于fromKey,小于toKey) |
Set<Map<K, V>> entrySet() | 返回由该TreeMap中的所有映射组成的Set对象 |
void forEach(BiConsumer<? super K,? super V> action) | 对该TreeMap中的每一个映射执行指定操作 |
Collection values() | 返回由该TreeMap中所有的values构成的集合 |
4 遍历方法
for:
for (Map.Entry entry : treeMap.entrySet()) {
System.out.println(entry);
}
迭代器:
Iterator iterator = treeMap.entrySet().iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
5 与hashMap和LinkedHashMap比较
- HashMap可实现快速存储和检索,但其缺点是其包含的元素是无序的,这导致它在存在大量迭代的情况下表现不佳
- LinkedHashMap保留了HashMap的优势,且其包含的元素是有序的。它在有大量迭代的情况下表现更好
- TreeMap能便捷的实现对其内部元素的各种排序,但其一般性能比前两种map差。