简单理解java为什么要同时重写equals方法和hashcode

一、从集合和数据结构说

      这几天在博客上看关于为什么重写equals方法的同时也要重写hashcode方法,越看越糊涂,后来自己仔细一想,本来很简单的事情为何说的那么麻烦。现在我来一一说说我的理解。

    在数据结构中我们学习过查找,但是实践的比较少。而java集合正是利用了这个查找

    什么是查找?就是给你1个值在成千上万的记录中找到他。

    主要有两种查找:顺序查找和hash查找。

     顺序查找:从头到尾一个一个找呗(java list,包括linkedlist和arraylist, 就是采用这个设计,既然查找总得比较吧,比较你两个key相不相等,所以equals方法就产生了)。

     hash查找:先计算hash值(hashcode方法产生)找到地址,再进行比较(equals方法就产生了),如果不相等就进行冲突处理。由于java采用链地址冲突处理,所以从单链表不断比较,直到查到为止。

二、hash查找

    简单介绍一下hash查找。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值