点击上方☝

Java编程技术乐园,轻松关注!

及时获取有趣有料的技术文章

做一个积极的人编码、改bug、提升自己

我有一个乐园,面向编程,春暖花开!

作者:Icharle

https://icharle.com/hashmapkebianobj.html

前言

在 Java 道路上越踩越多坑,最近被问到一个知识点,当对象作为 HashMap 一个 key 时,在未重写equals和hashcode方法时候,get方法返回的值为null。

分析

在下面一段代码中,未重写 equals 以及 hashCode 方法情况下,输出结果为null。

改造后代码:

原因分析

HashMap 在查找某一个 key 时,先是用 hashCode 函数根据该 key 的地址计算,再用 equals 函数根据对象的地址进行比较。

在代码片段一中 : map.put(new People("icharle"), 18); 以及System.out.println(map.get(new People("icharle")));中默认是两个对象 (也就是说两个对象的地址不一样,自然 hashcode 函数得到的值是不一样 (因为两个的对象的地址不同,自然在 equals 时候更不可能相等,最终得到的结果为 null。

在代码片段二中:重载hashCode()函数的作用是:对于同一个 key,得到相同的 hash 值,重载equals()函数的作用是:向HashMap表明当前对象和 key 上所保存的对象是相等的。因此该情况下最终结果为 18

往期精彩回顾

欢迎长按下图关注公众号

后台回复【资源】,获取珍藏干货!

99.9%的伙伴都很喜欢

朕已阅

java hashmap替换key,HashMap 用可变对象作为 key 踩坑相关推荐

  1. java顺丰运费接口_对接顺丰丰桥踩坑汇总(写给自己)

    顺丰丰桥使用流程 登录注册丰桥 https://qiao.sf-express.com/index.html 申请一条龙 开发者信息 按提示搞就行了,然后会有个测试月卡,如果正式环境需要申请正式月卡 ...

  2. Java实现图片(jpg/png)转成TIF格式(300dpi)踩坑笔记

    一.TIF/TIFF介绍 引用百度百科的一句话总结: 标签图像文件格式(Tag Image File Format,简写为TIFF)是一种灵活的位图格式,主要用来存储包括照片和艺术图在内的图像. 二. ...

  3. Java多线程--设计模式(二、Immutable Object(不可变对象)模式)

    一.Immutable Object 模式简介 多线程共享变量的情况下,为了保证数据的一致性,往往需要对这些变量的访问进行加锁.而锁本身又会带来一些问题和开销.Immutable Object 模式使 ...

  4. Hashmap 面试题 + Hashmap 原理 + Hashmap 源码(史上最全)

    HashMap作为我们日常使用最频繁的容器之一,相信你一定不陌生了.今天我们就从HashMap的底层实现讲起,深度了解下它的设计与优化. 常用的数据结构 我在05讲分享List集合类的时候,讲过Arr ...

  5. 关于HashCode方法,可变对象和内存泄漏问题

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 这是一篇关于hashCode方法,可变对象和内存泄漏问题的文章. 1. 重写 hashCod ...

  6. 为什么 HashMap 常用 String 对象作 key

    偶然的一次机会看到了这个题目,有一个网上的朋友说在面试的时候面到了这道题目,没有能给出解释.这里就谈一谈自己的理解. 在<Java 编程思想>中有这么一句话:设计 hashCode() 时 ...

  7. java hashmap 重复_java HashMap插入重复Key值问题

    今天在用到了HashMap来添加数据,发现有重复的key添加.查看java文档终于知道了解决方法.请看下面原来的例子: class User { private String id; private  ...

  8. Java集合框架:HashMap

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  9. 【Java千问】HashMap之追命5连问

    1.HashMap底层实现数据结构? 总的来说,HashMap就是数组+链表的组合实现,每个数组元素存储一个链表的头结点,本质上来说是哈希表"拉链法"的实现. HashMap的链表 ...

最新文章

  1. SAP MM Inbound Delivery凭证流里不出现采购订单号?
  2. MySQL主从复制延迟的监测及缓解
  3. hdu1521(指数母函数)
  4. 启明云端分享|ESP32-S3 的 USB 支持 USB Host 吗?
  5. ajax加载对应的json,jQuery:多个AJAX/JSON请求对应单个回调并行加载
  6. python解题软件哪个好用_几个好用的Python数据分析工具
  7. 角度控制_手机拍剪影,选择拍摄角度,还要控制画面亮度
  8. camera---(3)双camera 生态链
  9. SQLServer left join 出现比左表多的数据
  10. 【概率论与数理统计】小结7 - 统计学中的基本概念
  11. MarkDown 语法初步
  12. 网络安全学习第16篇 - CE游戏动态内存修改器
  13. 用计算机弹奏体面6,抖音用计算器弹奏音乐曲谱大全 极乐净土、体面和成都等歌曲...
  14. Linux 路由表和静态路由
  15. UOJ Easy Round #8 T1 打雪仗 题解
  16. 洛谷 P3387 缩点 题解
  17. Lua程序设计 | 模块和包、泛型迭代器和for、元表和元方法
  18. IBL-镜面反射(预滤波篇)
  19. KVM切换器和VGA切换器的区别
  20. 大数据能否解决城市所面临的环境问题

热门文章

  1. 非负矩阵之Perron-Frobenius定理
  2. android n 发布时间,Android N 正式版将在9月发布
  3. java扫描指定package注解_java获取包下被指定注解的类
  4. 绘制Nine-Patch图片
  5. NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」
  6. Mybatis 在 insert 之后想获取自增的主键 id,但却总是返回1
  7. [转]Global exception handling in Web API 2.1 and NLog
  8. 05 HTML字符串转换成jQuery对象、绑定数据到元素上
  9. (Oracle)DDL及其数据泵导入导出(impdp/expdp)
  10. 解决checkbox与对应文字不对齐的问题