HashCode

作者: 34sir | 来源:发表于2019-01-29 10:14 被阅读4次

作用

提高查询效率
常规的查询:一一的比较 但是仔细一想这样很耗性能 比如现在已经有一万个数据 添加一个进来需要对比一万次 那性能开销就太大了

原理

将数据根据特定的算法映射到一个固定地址上 相当于一人一个座位(内存地址) 一人一个座位号(HashCode)的意思 一旦某个座位上有人 那么才和这个座位上的人eqauls比较 同一个人则不分配 不同则分配其他位置(散列) 如果这个座位上没人 则直接就坐

基于实现以上的需求 Java对eqaulshashCode做了以下的规定:

  • 如果eqauls为true 则两者的hashCode一定相同
  • 如果两者的hashCode相同 eqauls不一定为true;hashCode不同 那么eqauls一定不为true

于是可以得出以下结论:
对比两个对象是否相等最可靠的做法是eqauls

这里也就体现了hashCode对查询效率的优化:
首先 hashcode对比的效率会高于eqauls 那么在上的上述的场景中 我们可以先通过hashcode来对比 如果不一样就不需要eqauls对比 如果一样再通eqauls对比增加可靠性 这种方案既准确也高效

补充

哪些情况下hashCode会相同?

  • 相同的字符串
  • 大小一样的Integer

相关文章

网友评论

      本文标题:HashCode

      本文链接:https://www.haomeiwen.com/subject/hszyeftx.html