对比hashtable,hashmap,treemap的区别

Posted hanguocai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对比hashtable,hashmap,treemap的区别相关的知识,希望对你有一定的参考价值。

一:hashtable线程安全,不支持null键和值,hashmap支持null键和值,treemap是红黑树实现的,可以通过key的comparotor实现排序,还有原始类型的自然顺序,它的get,remove,add都是logn时间复杂度

二:hashmap 的实现原理,负载因子,容量,多线程导致的循环占用cpu,size不准确

三:技术分享图片

四:用到集合的时候一定要考虑自己创建的对象是否需要从新实现equals和hashcode方法。如果用到hashmap,一定要注意这俩个方法。这俩个都要实现,不能漏一个。

五:linkHashMap 的遍历顺序符合插入的顺序,注意,这种数据结构可以用来实现缓存删除策略,最近最少使用的缓存删除策略。有个构造方法可以实现这种需求

六:treemap就是根据键的顺序决定的,实现comparable或者comparator接口

七:comparato 的实现与eqauls一致

八:hashmap结构

 

技术分享图片

九:hashmap的使用实在第一次使用的时候,没有在构造函数初始化的。

十:hashmap源码:主要的逻辑主要是在putvalue中,大于负载因子*容量就会扩容,而且会扩容2倍。达到一定的值就会转为树

树化的根本问题是安全,如果map遇到攻击就会变成链表,转为树,可以提高性能,避免拖垮服务器

import java.util.LinkedHashMap...

极客时间版权所有: https://time.geekbang.org/column/article/8053

以上是关于对比hashtable,hashmap,treemap的区别的主要内容,如果未能解决你的问题,请参考以下文章

HashMap和HashTable的比较

Java 对比HashtableHashmapTreemap有什么不同?(正在整理学习中)

万字长文|Hashtable源码深度解析以及与HashMap的区别

从Java源码的角度来分析HashMap与HashTable的区别

Hashtable与ConcurrentHashMap入门——简单使用

数据结构解析-HashTable