HashMap的底层原理

hashmap的工作原理

HashMap基于hashing原理,通过get()和put()方法来存储和获取对象,当我们将键值对传递给put()方法时,他调用键对象的hashcode方法来计算hashcode值,然后找到bucket位置来存储对象,当获取对象时吗,通过键对象的equals方法找到正确的键值对,然后返回值对象,HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象。

hashmap和hashtable的区别

主要区别分为:线程安全,同步(synchronization),速度。
同步:HashMap不是线程同步的,而hashtable是线程同步的。
线程安全:hashmap不是线程安全的,而hashtable是线程安全的。
速度:hashmap速度比hashtable速度快。

我们能否让HashMap同步?
HashMap可以通过下面的语句进行同步:
Map m = Collections.synchronizeMap(hashMap);

HashMap和HashSet的区别

HashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和HashMap,也可以说是不完整。HashMap和HashSet都是collection框架的一部分,它们让我们能够使用对象的集合。collection框架有自己的接口和实现,主要分为Set接口,List接口和Queue接口。它们有各自的特点,Set的集合里不允许对象有重复的值,List允许有重复,它对集合中的对象进行索引,Queue的工作原理是FCFS算法(First Come, First Serve)。

hashset

hashset实现了collection的set接口,他不允许集合中出现重复的值,将对象存储到hashset之前要将对象的hashcode方法和equals方法重写,主要用来比较对象的值是否相等,以确保不会重复出现同样的值。

hashmap

hashmap实现了map接口。map接口键值对进行映射,map中不允许出现重复的键。map接口有两个实现,分别时hashmap和treemap。treemap保存了对象的排列序列,而hashmap则不然,HashMap允许键和值为null。HashMap是非synchronized的,但collection框架提供方法能保证HashMap synchronized,这样多个线程同时访问HashMap时,能保证只有一个线程更改Map。

转自该博客

https://blog.csdn.net/suifeng629/article/details/82179996

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值