HashSet HashMap & HashTable

本文深入探讨了HashSet集合的数据存储机制,包括哈希值计算、冲突处理及属性过滤策略。重点介绍了如何通过重写hashCode()和equals()方法来优化HashSet性能,确保高效存储和检索操作。
HashSet
存储原理
每次存储对象的时候, 调用该对象的hashCode()方法得到哈希值, 在集合中查找是否有哈希值相同的对象.
如果没有哈希值相同的对象, 直接存入.
如果有哈希值相同的对象, 则和哈希值相同的对象进行equals()比较.
比较结果为false直接存入, 结果为true则不存.
过滤属性相同元素
如果我们希望HashSet能够过滤属性重复的元素, 那么就需要重写hashCode()和equals().
属性相同的对象hashCode()方法要返回同一个哈希值, 属性相同的对象equals()方法要返回true.
为了提高效率, hashCode()方法在属性不同的时候尽量返回不同的哈希值.

HashMap (线程不安全,存取速度快,允许存放null键,null值。)
在每次存储键值对的时候, 调用Key对象的hashCode()方法计算一个哈希值. 在集合中查找是否有哈希值相同的Key对象.
如果没有哈希值相同的Key对象就直接存入键值对.
如果有哈希值相同的Key对象, 那么和这些相同的Key对象进行equals()比较.
比较结果为false就直接存入, 比较结果为true则将Value对象覆盖.

Hashtable
线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值