HashTable、HashMap、TreeMap区别

HashTable、HashMap、TreeMap都实现了Map接口,是以键值对的形式存储和操作数据的容器类型。
HashTable
是同步的,不支持null键和值,因为同步导致的性能开销,不推荐使用。扩展Dictionary类的。
HashMap
与HashTable区别,在于HashMap不是同步的,支持null键和值等。使用较多。扩展了AbstractMap。在大部分放入、访问或者删除,而对顺序没有特别要求的场景是较好的选择。
1)重写了hashCode也需要重写equals。
2)equals相等,hashCode也要相等。
3)hashCode一致性,状态改变返回的哈希值要一致。

TreeMap
基于红黑树的顺序访问。与HashMap不同,它的get、put、remove操作时间复杂度都是O(log(n))。整体顺序是由键的顺序关系决定的,通过Comparator或Comparable来决定。
LinkedHashMap
遍历顺序符合插入顺序。通过为键值对维护一个双向链表。
PriorityQueue
优先队列场景,基于二叉堆实现,依赖于同一种排序机制。

猜你喜欢

转载自blog.csdn.net/tongwudi5093/article/details/113640124