每日一问 HashTable,HashMap和TreeMap之间有什么区别?

HashTable,HashMap和TreeMap之间有什么区别?

浅谈一下,分别从底层结构,线程是否安全,是否允许为空值以及常用性来说。

1.底层结构对比:

HashTable底层是哈希表,HashMap底层是数组+链表,且在jdk1.8后引入了红黑树,相对于HashTable来说,HashMap的常用性更高。

TreeMap的底层是红黑树结构,它所提供的是顺序访问。所以在这三种中,如果是要按顺序遍历来说,它的效率是很高的。

2.线程时候安全方面

HashTable和HashMap都是线程不安全的。

TreeMap的线程是安全的。

3.是否允许空值。

Map实现类

KEY

VALUE

HashMap

允许为Null

允许为Null

TreeMap

不允许为Null

允许为Null

ConcurrentMap

不允许为Null

不允许为Null

HashTable

不允许为Null

不允许为Null

总结:HashTable是由早期的java类库提供的一个由哈希表实现的,本身是同步的,且不支持null值,由于性能同步,导致了由额外的性能消耗,现在已很少使用。HashMap为三者中最为常用的,它又支持null值和null键,当你对线程的安全要求不是太高时,它是你最好的选择。TreeMap当你需要顺序遍历时,它是以最好的选择。但是注意,一般情况下它的性能不如HashMap,所以如果你对性能要求很高的时候,请谨慎选择。

//注:本人可能由于学习不精,导致文章中出现错误,如有发现,欢迎指导批评,感激不尽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值