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?