在HashMap中,为什么不能使用基本数据类型作为key?

  其实和HashMap底层的存储原理有关,HashMap存储数据的特点是:无序、无索引、不能存储重复元素。

  存储元素采用的是hash表存储数据,每存储一个对象的时候,都会调用其hashCode()方法,算出其hash值,如果相同,则认为是相同的数据,直接不存储,如果hash值不同,则再调用其equals方法进行比较,如果返回true,则认为是相同的对象,不存储,如果返回false,则认为是不同的对象,可以存储到HashMap集合中。

  之所以key不能为基本数据类型,是因为基本数据类型不能调用其hashCode()和equals()方法进行比较,所以HashMap集合的key只能为引用数据类型,不能为基本数据类型,可以使用基本数据类型的包装类,例如Integer Double等。

  当然,在HashMap中存储自定义对象的时候,需要自己再自定义的对象中重写其hashCode()方法和equals()方法,才能保证其存储不重复的元素,否则将存储多个重复的对象,因为每new一次,其就创建一个对象,内存地址是不同的。

转载自《HashMap集合中key只能为引用数据类型,不能为基本类型》

转载于:https://www.cnblogs.com/codingmengmeng/p/10474772.html

【转】HashMap集合中key只能为引用数据类型,不能为基本类型相关推荐

  1. HashMap集合中key只能为引用数据类型,不能为基本类型

    在HashMap中,为什么不能使用基本数据类型作为key? 其实和HashMap底层的存储原理有关,HashMap存储数据的特点是:无序.无索引.不能存储重复元素. 存储元素采用的是hash表存储数据 ...

  2. java map移除key为空_Java实现过滤掉map集合中key或value为空的值示例

    本文实例讲述了Java实现过滤掉map集合中key或value为空的值.分享给大家供大家参考,具体如下: import java.util.Collection; import java.util.H ...

  3. Java过滤掉map集合中key或value为空的值

    import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.M ...

  4. Java将map置空_Java实现过滤掉map集合中key或value为空的值示例

    Java实现过滤掉map集合中key或value为空的值示例 发布时间:2020-09-16 23:26:14 来源:脚本之家 阅读:147 作者:May的博客 本文实例讲述了Java实现过滤掉map ...

  5. java中数组的引用是什么意思_java中的数组是引用数据类型。

    [判断题]合金的组元决定了合金的性能 . [单选题]下列分子中存在分子内氢键的是 [单选题]下列电子构型中,不属于基态原子电子构型的是 [判断题]面心立方晶格的纯铁较体心立方晶格的纯铁强度高 [判断题 ...

  6. java中的五种引用数据类型(对象类型)

    注意,不是JVM中的四种引用类型:强.软.弱.虚引用. 详见我的另一篇文章<JVM中的四种引用类型> Java有 5种引用类型(对象类型):类 接口 数组 枚举 标注 引用类型:底层结构和 ...

  7. EL表达式, JSTL, 获取map集合中key的value

    序言:今天在项目中使用了map存储list和普通对象,但是在jsp中显示的时候出来问题,后经查阅,终于解决,现在记录一下,以便以后查阅: 一:后台代码如下: package cn.gov.csrc.c ...

  8. 在python中、int表示的数据类型是_python--002--数据类型(int、str)

    1. 整型 int int().bit_length() v = int("a", base=16) #表示以16进制转换a print(v) age= 5r= age.bit_l ...

  9. 【Groovy】map 集合 ( 根据 Key 获取 map 集合中对应的值 | map.Key 方式 | map.‘Key’ 方式 | map[‘Key’] 方式 | 代码示例 )

    文章目录 一.根据 Key 获取 map 集合中对应的值 1.通过 map.Key 方式获取 map 集合中的值 Value 2.通过 map.'Key' 方式获取 map 集合中的值 Value 3 ...

最新文章

  1. 美团分布式服务治理框架OCTO之二:Mesh化
  2. 网络抓包工具wireshark and tcpdump 及其实现基于的libpcap
  3. MVC下实现LayUI分页的Demo
  4. ie6 offsetWidth/offsetHeight无效
  5. ISLR—第二章 Statistical Learning
  6. [LeetCode] Plus One
  7. VUE3.x的基本使用
  8. LeetCode 139. 单词拆分(动态规划)
  9. 软件基本功:工作目标经常变化,要及时跟进
  10. python攻击局域网电脑_怎么攻击对方电脑?以知对方IP,且对方在线
  11. 如何将CAD图纸转换成彩色jpg?
  12. 1_绪论 分布式机器学习
  13. win10 外接触摸屏触摸校准
  14. DNA甲基化可实现转座因子驱动的基因组扩增
  15. Python_Flask
  16. 自定义函数使用GridSearchCV参数寻优
  17. MATLAB函数判断绝对素数,自定义函数,找出 以内所有素数(质数)并计算它们的和,matlab...
  18. 考计算机专业要理科好吗,大学想念计算机系是不是该高中读理科?
  19. 哈尔滨理工大学---沼跃鱼(待整理)
  20. WinGate 6.0 build 984铪铪铪

热门文章

  1. ubuntu安装与配置nfs服务器
  2. 使用分支限界法解决单源最短路径问题。
  3. eclipse部分快捷操作
  4. python基础——数字型
  5. 【☘️C语言の单链表是否有环问题☘️】
  6. UNIX再学习 -- 网络与网络协议
  7. 【IPFS + 区块链 系列】 入门篇 - IPFS环境配置
  8. Android的服务(Service)(三)Service客户端的绑定与跨进程
  9. Android开发工具之Android Studio-合并主干和分支代码
  10. java符号引用 直接引用_JVM的符号引用和直接引用