11st

Java 中的 TreeMap 能够按照 key 进行排序,实现键值对的有序存储,与 HashMap 将数组作为存储结构不同,TreeMap 以红黑树作为存储结构,红黑树的每一个节点就是一个键值对。

TreeMap 的优点:

一、因为底层是红黑树,所以插入键值对的时候总能保证 key 是有序的,不需要专门对其进行排序。排序时可以按照自然顺序比较 key 的大小,也可以让 key 实现 Comparator 接口,自定义比较器。

二、TreeMap 插入键值对的时间复杂度是 O(logn),且这个时间复杂度是很稳定的。不像 HashMap,如果没有哈希冲突,则 HashMap 的插入时间复杂度是 O(1),如果有哈希冲突的话,时间复杂度大约是 O(logk)(k 是哈希冲突的键值对数量),如果遇到数组扩容,则时间复杂度更高了。

TreeMap 的缺点:

同样由于红黑树的缘故,TreeMap 查找的时间复杂度无法做到 HashMap 的 O(1),而是 O(logn)。

Last updated

Was this helpful?