java中哈希表,Map,HashCode,Equals等介绍

本文详细介绍了Java中哈希表的工作原理,特别是HashMap如何通过计算Key的哈希值来定位元素,以及hashCode与equals方法的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于哈希表的原理,及java中hashmap等

  1. 哈希表
    在java中如hashtable实现了哈希表等,如put(K,Vlaue)是先计算出K的hashcode值,再通过hashcode计算出
    hashtable中Entry[]数组 table的下标,在table[next]中进行遍历Entry链表进行key和value的比较,相同的key
    及hashcode,用新值取代旧值,不同的直接添加进去。(具体实现:http://www.tuicool.com/articles/BvI3Ir)

  2. HashCode
    hashcode是通过一定规则,得到与对象地址,内容等相关的int值。

  3. hashcode和equals结果的关系
    相同的对象hashcode值一定相等,不同的可能相等,不管equals是否重写,equals结果相等,hashcode值一定相等,
    equals结果值不等式,hashcode可能不等,equals重写之后,hashcode的值也要重写
    如:
    A a=new A();
    B b=new B();
    使用equals比较是a和b相等,如果不重写的话,按照以前的规则hashcode不相等,那么map.get(a)和map.get(b)的结 果不一样,则就失去了改hashcode的意义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值