1, ==是比较句柄,若ob1==ob2,也就是两个句柄指向一个对象。所以ob1.hashcode()==ob2.hashcode()和ob1.equals(ob2) == true;

2,hashcode相同的两个对象,ob1.equals(ob2)不一定为true;ob1.equals(ob2)为true的两个对象,hashcode应该相同。即覆写equals方法时应同时覆写hashcode方法

3,hashcode一般用到HashSet,HashMap中,根据hashcode来确定存储位置,如果hashcode相同,再用equals来判断Set中的唯一性。

HashMap中put方法的源代码是:

  1. public V put(K key, V value) {

  2. if (key == null)

  3. return putForNullKey(value);

  4. int hash = hash(key.hashCode());

  5. int i = indexFor(hash, table.length);

  6. for (Entry<K,V> e = table[i]; e != null; e = e.next) {

  7. Object k;

  8. if (e.hash == hash && ((k = e.key) == key || key.equals(k))) {

  9. V oldValue = e.value;

  10. e.value = value;

  11. e.recordAccess(this);

  12. return oldValue;

  13. }

  14. }

  15. modCount++;

  16. addEntry(hash, key, value, i);

  17. return null;

  18. }

看e.hash == hash && ((k = e.key) == key || key.equals(k))这句,即先判定hashcode是否相同,再判断equals是否为true

转载于:https://blog.51cto.com/jianshusoft/697702

hashcode、equals和==简单总结相关推荐

  1. ==和equals的简单比较

    前言:==和equals这个两个东西,经常放在一块做比较,下面我也给出一个简单的例子,对他俩进行一个简单的比较,先看例子,然后在看结论.(实验环境:win7+jdk7) 1:==和equals简单比较 ...

  2. Java 基础复习实践 --- Hashcode Equals

    虽然很多知识点书籍都有整理,但是记性总是不好,所以决定将一些细小容易混淆的概念,通过简单的 Demo 实践,加深复习.特此开一个坑,坚持就是胜利. 本章内容主要为了理解以下几个知识点: equals( ...

  3. Java 的toString() 和 equals()函数简单介绍

    toString() 和 equals() 都是java面试中经常问到的地方. 特别是1条经典问题:  equals 和 "==" 的区别... 本文就从简单介绍下这两个objec ...

  4. day15:hash值、Set(hashCode(),equals())、HashSet、LinkedHashSet、TreeSet、Map(keySet,entry(get.set)、HashMap

    一 回顾 1.集合的分类:单列集合 Collection 双列集合 Map 2.Collection 四大all的方法 3.List 特点: 有序 有索引 可以重复四个带索引操作的方法 4.Array ...

  5. 你为什么要关心equals和hashcode

    等于和哈希码是每个Java对象的基本元素. 它们的正确性和性能对于您的应用程序至关重要. 但是,我们经常看到甚至有经验的程序员都忽略了类开发的这一部分. 在本文中,我将介绍一些与这两种非常基本的方法有 ...

  6. IntelliJ IDEA:使用Google Guava生成equals,hashCode和toString

    问题 在Java领域,我们经常需要编写equals , hashCode和toString方法. 老实说,这通常只是一个样板义务. 得益于智能IDE,我们通常不再自己这样做. 我们只是让和IDE一起努 ...

  7. 学习Java编程equals()和hashCode()方法

    equals()和hashCode()区别? equals():反映的是对象或变量具体的值,即两个对象里面包含的值--可能是对象的引用,也可能是值类型的值. hashCode():计算出对象实例的哈希 ...

  8. equals和==和hashcode的恩怨情仇

    一.前言: equals和==和hashcode是java中的基础中的基础,但是确实容易被问到,而且因为工作中经常用所以很容易在复习时遗漏掉,这几天面了个大厂就在这个问题上翻车了,不仅记混了,而且很坚 ...

  9. 为什么重写equals()就要重写hashCode()

    文章目录 一.前言 二.hashCode()方法 三.equals()方法 四.hashCode() 与 equals() 4.1 不会创建"类对应的散列表"的情况 4.2 会创建 ...

最新文章

  1. 谷歌技术主管:当我们选择工作时,什么最重要?
  2. 在IIS6上部署WebService
  3. Email 正则验证
  4. 【收藏】spark中map与mapPartitions区别
  5. AI助手智商测评Siri进步最大,无人驾驶打车服务已在美国试行
  6. POJ 1845 Sumdiv 【逆元】
  7. oracle中的sysdba角色,oracle 以sysdba角色 登陆用户
  8. 高等代数第3版下 [丘维声 著] 2015年版_微电子电路设计 第4版 电子书
  9. raspbian linux,如何在 Raspberry Pi 上安装 Raspbian
  10. MySQL基础(2)----DDL DML DQL语言完成数据库的增删改查操作 数据备份(导入导出sql包) 单表查询
  11. GNU Operating System
  12. python电影名称词云_python爬虫——词云分析最热门电影《后来的我们》
  13. ansible的安装
  14. 高性能网络编程-反应堆模型(reactor)
  15. 2021 CCF基于UEBA的用户上网异常行为分析baseline线上0.90
  16. AlphaCode 惊世登场!编程版“阿法狗”悄悄参赛,击败一半程序员
  17. 团队作业10——事后诸葛亮分析
  18. 日常使用计算机出现的小问题(一)win10操作系统设备和驱动器栏目中出现空白图标该如何删除?删除一次刷新又重新出现
  19. 解决 k8s 限制内存后 还出现 OOM 错误的问题:资源整合
  20. Mysql索引分类及其使用实例

热门文章

  1. 微软宣布在机器翻译方面取得突破,中翻英可达人类水平
  2. 图灵奖公布:高性能计算先驱、为超算铺平道路的Jack Dongarra获奖
  3. 后浪优秀!21 岁小伙兼职程序员养家,大三存款达 6 位数
  4. 平均14915元,2021 年 1 月程序员工资统计出炉
  5. 任正非:明年至少招聘 8000 名应届生,华为人才将分为三类
  6. StackOverFlow上你没看过的7个Java最佳答案
  7. Linux常用基本命令[cp]
  8. CIO无法忽视的三大云角色
  9. vmware 虚拟机控制台打开慢的解决方案
  10. SEO快速排名算法独家揭秘