HashMap、HashTable、LinkedHashMap,TreeMap的区别。

Map是通过键值对存储的,键必须是唯一的,可以有一个null键,值是可以重复的,可以有多个null值。

HashMap实现Map接口,也是键值对形式存储的。HashMap存储数据时,通过唯一的键生成唯一的hashcode值,去存储value值。当HashMap通过键获取值的时候,速度是很快的。HashMap不支持线程的同步。如果需要实现同步,可以使用Collections的synchronizedMap方法,或者使用ConCurrentHashMap。

HashTable和HashMap是类似的,它继承Dictionary类。但是它不允许键和值为null,它支持线程的同步,这就导致,一个时间点,只能有一个线程操作这个HashTable,所以HashTable的效率很低。

LinkedHashMap是有序的,在用Iterator遍历LinkedHashMap的时候,先插进去的,先取出来。一般情况下,HashMap的遍历速度大于LinkedHashMap的遍历速度。但是有一种另外的情况,当HashMap的容量很大,但是存储的数据量很小,LinkedHashMap的存储的数据量很小,任意容量的时候,HashMap的遍历速度可能小于LinkedHashMap的遍历速度。LinkedHashMap的遍历速度和它存储的数据量有关,HashMap的遍历速度和它的存储的容量有关。

TreeMap实现了SortMap接口,它里面的数据按照键实现了升序排序,也可以自定义排序,使用Iterator遍历TreeMap的时候,取出来的数据是排序后的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值