Hashtable、HashMap、TreeMap的区别

都是最多见的一些 Map 实现,是以键值对的形式存储和操做数据的容器类型。

Hashtable 是早期 Java 类库提供的一个哈希表实现,自己是同步的,不支持 null 键和值,因为同步致使的性能开销,因此已经不多被推荐使用。

HashMap 是应用更加普遍的哈希表实现,行为上大体上与 HashTable 一致,主要区别在于 HashMap 不是同步的,支持 null 键和值等。一般状况下,HashMap 进行 put 或者 get 操做,能够达到常数时间的性能,因此它是绝大部分利用键值对存取场景的首选,好比,实现一个用户 ID 和用户信息对应的运行时存储结构。

TreeMap 则是基于红黑树的一种提供顺序访问的 Map,和 HashMap 不一样,它的 get、put、remove 之类操做都是 O(log(n))的时间复杂度,具体顺序能够由指定的 Comparator 来决定,或者根据键的天然顺序来判断。

性能

相关文章
相关标签/搜索