日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/2 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java hashmap替换key,HashMap 用可变对象作为 key 踩坑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方?

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 踩坑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。