首页 > 其他分享 >HashMap为啥不能用基本类型作为key值

HashMap为啥不能用基本类型作为key值

时间:2023-03-16 22:00:10浏览次数:46  
标签:存储 hash HashMap 为啥 键值 key 类型

java 中, 为什么基本类型不能做为 HashMap 的键值, 而只能是引用类型,把引用类型作为 HashMap 的键值

首先,HashMap存储数据的特点是:无序、无索引、不能存储重复元素。

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

因此,我们之所以不能用基本类型作为key值,是因为基本类型就没有其equals()方法,但我们可以分别使用它们的包装器类作为HashMap的key。

原文链接:https://blog.csdn.net/tlovet_1314/article/details/104685905

标签:存储,hash,HashMap,为啥,键值,key,类型
From: https://www.cnblogs.com/yliunyue/p/17224331.html

相关文章

  • 你能谈谈HashMap怎样解决hash冲突吗
    在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。HashMap采用一种所谓的“Hash算法”来......
  • Vue.js 列表渲染-key的作用与原理
    视频虚拟DOM对比算法diff<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>key的原理</title> <scripttype="text/javascript"src="../js/vue......
  • 微信支付V3 InvalidKeyException: Illegal key size
    使用Java加载密钥时,抛出异常InvalidKeyException:Illegalkeysize受到美国法律的约束,早期Java的运行时限制了JCE支持的密钥长度,即默认不支持256位的AES。解决的方法有三......
  • Redis查询大key
    原文安装wget"https://pypi.python.org/packages/68/44/5efe9e98ad83ef5b742ce62a15bea609ed5a0d1caf35b79257ddb324031a/redis-2.10.5.tar.gz#md5=3b26c2b9703b4b56b30......
  • keymaster4.0 VTS测试用例
    VTS单模块测试:./VtsHalKeymasterV4_0TargetTest--gtest_filter=PerInstance/HmacKeySharingTest*/0_default./VtsHalKeymasterV4_0TargetTest--gtest_filter=PerInsta......
  • 学习-Object.keys()方法
    标准内置对象Object  /** * Object.keys() * Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组 * 中属性名的排列顺序和正常循......
  • 在群晖移动硬盘之中运行AutoHotkey自动化热键脚本 2023-3-15
      在群晖移动硬盘之中运行AutoHotkey自动化热键脚本2023-3-15 先用BAT批处理脚本或者AutoHotkey自动化热键脚本自动静默连接群晖NAS的SFTP文件服务并下载所需的脚......
  • Oracle 查询时报错ORA-00923: FROM keyword not found where expected
    Oracle查询时报错ORA-00923:FROMkeywordnotfoundwhereexpected,从字面上理解就是SQL语法错误缺少FROM关键字,下面简单说一下可能发生报错的几种情况:第一种查询语句......
  • 蓝桥杯嵌入式——KEY模块(长按)
    其实这是上一篇的升级版,此处只呈现和上文中的差异之处编程.h文件中的结构体新增了两个变量 1#ifndef_interrupt_H_2#define_interrupt_H_34#include"m......
  • 蓝桥杯嵌入式——KEY模块
    配置 这个是引脚配置  然后是时钟配置(分频和arr)  别忘了这个 编程(初始化) 这个真的很容易忘记1HAL_TIM_Base_Start_IT(&htim3);编程(中断).h文......