电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

淺談java中HashMap鍵的比較方式

瀏覽:135日期:2022-08-12 08:53:25

先看一個(gè)例子

Integer integer=12344; Integer integer1=12344;

在Java中Integer 和Integer1是不相等的,但是如果再執(zhí)行如下語句

map.put(integer, 1); map.put(integer1, 2);

會(huì)發(fā)現(xiàn)2會(huì)把1覆蓋,問題來了,明明是兩個(gè)不同的對象,為什么,2會(huì)把1覆蓋呢?我們看HashMap中添加鍵的源代碼,如下

淺談java中HashMap鍵的比較方式

可以發(fā)現(xiàn)我們傳進(jìn)來的鍵交給了一個(gè)hash的成員方法區(qū)處理,這里我們看看hash方法的源碼

淺談java中HashMap鍵的比較方式

哦,看到這里明白了,我們傳進(jìn)來的鍵會(huì)執(zhí)行hashCode方法,那么到這里我們明白了,原來,HashMap判斷兩個(gè)鍵是否相等是看他們的hashCode是否相等,那我們看看上面說的integer和integer1的hashCode是否相等

淺談java中HashMap鍵的比較方式

這里發(fā)現(xiàn)是相等的,都是12344,所以我們可以很輕易的得出結(jié)論integer和integer1代表的是同一個(gè)鍵~,(這個(gè)結(jié)論是錯(cuò)的,繼續(xù)往下看)到這里還有一個(gè)問題,hashCode相等的兩個(gè)對象他們的鍵一定是相同的嗎?先說答案不是,為什么呢?來,我再舉一個(gè)例子,先定義兩個(gè)字符串name,name1

淺談java中HashMap鍵的比較方式

然后輸出他們的hashCode值

淺談java中HashMap鍵的比較方式

可以看出,這兩個(gè)不同的字符串擁有相同的hashCode值,那么我們執(zhí)行如下代碼

淺談java中HashMap鍵的比較方式

看看他的輸出結(jié)果

淺談java中HashMap鍵的比較方式

嗯?怎么會(huì)這樣?我們定義的兩個(gè)字符串明明hashCode值相同,按理來說,他們在HashMap中應(yīng)該是同一個(gè)鍵才對,為什么會(huì)是兩個(gè)不同的鍵?我們再回過頭看HashMap中的put方法

淺談java中HashMap鍵的比較方式

發(fā)現(xiàn)他調(diào)用了一個(gè)叫putVal得方法我們點(diǎn)進(jìn)去看看

淺談java中HashMap鍵的比較方式

看到這里我們明白了,為什么name和name1hashCode值相同卻是兩個(gè)不同的鍵,因?yàn)樗麄冞M(jìn)行equals比較的時(shí)候不同呀,name是'通話',name1是'重地',equals方法不同,自然就是同的鍵,至于我們一開始舉的例子,integer和integer1,他們先進(jìn)行了hashCode比較,相同后再進(jìn)行,equals比較,再相同才判定他們是同一個(gè)鍵;這也是我們?yōu)槭裁闯3Uf,為什么重寫equals還要重寫hashcode,這兩者缺一不可

到此這篇關(guān)于淺談java中HashMap鍵的比較方式的文章就介紹到這了,更多相關(guān)java HashMap鍵內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 沈阳液压泵_沈阳液压阀_沈阳液压站-沈阳海德太科液压设备有限公司 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 | 伊卡洛斯软装首页-电动窗帘,别墅窗帘,定制窗帘,江浙沪1000+别墅窗帘案例 | 铜镍-康铜-锰铜-电阻合金-NC003 - 杭州兴宇合金有限公司 | 无线讲解器-导游讲解器-自助讲解器-分区讲解系统 品牌生产厂家[鹰米讲解-合肥市徽马信息科技有限公司] | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 石家庄救护车出租_重症转院_跨省跨境医疗转送_活动赛事医疗保障_康复出院_放弃治疗_腾康26年医疗护送转诊团队 | 福尔卡(北京)新型材料技术股份有限公司 | 不锈钢拉手厂家|浴室门拉手厂家|江门市蓬江区金志翔五金制品有限公司 | 喷砂机厂家_自动喷砂机生产_新瑞自动化喷砂除锈设备 | 上海办公室装修,写字楼装修—启鸣装饰设计工程有限公司 | 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | 上海logo设计 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 上海噪音治理公司-专业隔音降噪公司-中广通环保 | 陶氏道康宁消泡剂_瓦克消泡剂_蓝星_海明斯德谦_广百进口消泡剂 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 | 美缝剂_美缝剂厂家_美缝剂加盟-地老板高端瓷砖美缝剂 | 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | 焊锡,锡膏,锡线,锡条,焊锡膏-绿志岛金属有限公司 | 广州小程序开发_APP开发公司_分销商城系统定制_小跑科技 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 定做大型恒温循环水浴槽-工业用不锈钢恒温水箱-大容量低温恒温水槽-常州精达仪器 | 智慧消防-消防物联网系统云平台 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 电缆故障测试仪_电缆故障定位仪_探测仪_检测仪器_陕西意联电气厂家 | CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 禹城彩钢厂_钢结构板房_彩钢复合板-禹城泰瑞彩钢复合板加工厂 | 一体化污水处理设备_生活污水处理设备_全自动加药装置厂家-明基环保 | 美侍宠物-专注宠物狗及宠物猫训练|喂养|医疗|繁育|品种|价格 | 混合反应量热仪-高温高压量热仪-微机差热分析仪DTA|凯璞百科 | 快速卷帘门_硬质快速卷帘门-西朗门业 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 昆明挖掘机修理厂_挖掘机翻新再制造-昆明聚力工程机械维修有限公司 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 |