HashSet和HashMap的区别

HashSet:实现了Set接口,它不允许集合中出现重复的元素。在将对象存储在HashSet之前,要确保重写了hashCode()和eauqls()方法,这样做的目的是比较对象的值是否相等,从而确保集合中没有存储相同的对象。如果不重写上述两个方法,那么将使用public boolean add(Object obj)方法默认实现,在Set中添加元素时,如果元素重复时返回"false",如果添加成功则返回"true"。

HashMap:实现了Map接口,Map接口对键值对进行映射。Map中不允许出现重复的键(Key),但是可以出现重复的值(Value)。HashMap不能保存对象的排列次序,并且可以有空的键值对(键和值同时为空,但至多只能有一个空的键)。HashMap是非线程安全的,也不是同步的(非Synchronize),要想实现线程安全,需要调用collections类的静态方法synchronizeMap()实现。

HashSetHashMap
实现Set接口实现Map接口
存储对象存储键值对
调用add()方法向Set中添加元素调用put()向Map中添加元素
HashSet使用成员对象来计算HashCode 值,对于两个对象来说hashcode可能相同,所以equals()方法用来判断对象的相等性,如果两个对象不同的话,那么返回falseHashMap使用键(Key)计算HashCode
HashSet较HashMap来说较慢HashMap相对于HashSet较快,因为它是使用唯一的键获取对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值