有序的哈希表,允许被插入的元素按照自然顺序或者特殊指定的比较器的顺序进行排序,底层基于红黑树的数据结构实现,支持O(log n)
时间复杂度进行get
,put
,remove
等些操作
基本介绍
- 基于红黑树
NavigableMap接口
的实现,map按照自然顺序排序或者按照在构建map时提供的比较器(Comparator
)来进行排序 - 实现为
containsKey
,get
,put
,remove
操作提供log(n)
算法复杂度的支持 - 注意,如果要正确实现
map
接口,维护tree map
的顺序,必须保证要跟equals
一致。这是因为map接口
是根据equals
操作定义的,但是sorted tree
使用的是compareTo 或者 compare
用来比较所有的key
. - 非同步的,可以使用
SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
将其装饰为一个支持同步操作的有序集合 - 迭代器返回的所有方法(
collection view methods
)都是fail-fast
的,如果map
内部结构在返回迭代器后发生变化,在使用该迭代器时将抛出ConcurrentModicationExcetion
异常
常用方法
put
1 | public V put(K key, V value) { |
get
1 | public V get(Object key) { |
remove
1 | public V remove(Object key) { |
参考
jdk-11.0.2
- 算法导论第13章