久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Java Objects工具類原理及用法詳解

瀏覽:2日期:2022-08-27 14:30:19

Objects工具類

jdk 1.7引進的工具類,都是靜態調用的方法,jdk 1.8新增了部分方法

重點方法

equals

用于字符串和包裝對象的比較,先比較內存地址,再比較值

deepEquals

數組的比較,先比較內存地址,再比較值,如String、char、byte、int數組,或者包裝類型Integer等數組

hashCode

返回對象的hashCode,若傳入的為null,則返回0

hash

傳入可變參數的所有值得hashCode的總和,底層用Arrays.hashCode

可變參數

Java Objects工具類原理及用法詳解

重寫HashCode和Equals

HashCode方法

頂級類Object里面的方法,所有類都是繼承Object的,返回值int類型

根據一定的hash規則(存儲地址,字段,或者長度等),映射成一個數值,即散列值

Equals方法

頂級類Object里面的方法,所有類都是繼承Object的,返回值boolean類型

根據自定義的匹配規則,用于匹配兩個對象是否一樣,一般邏輯

//判斷地址是否⼀樣//⾮空判斷和class類型判斷//強轉//對象⾥⾯的字段⼀⼀匹配

重寫規則

class User { private int age; private String name; private Date time; // 省略setter和getter⽅法 @Override public boolean equals(Object o) { if (this == o)return true; if (o == null || getClass() != o.getClass())return false; User user = (User) o; return age == user.age && Objects.equals(name, user.name) && Objects.equals(time, user.time); } @Override public int hashCode() { return Objects.hash(age, name, time); } }

問題:當向集合中插入對象時,如何判別在集合中是否已經存在該對象,比如Set確保存儲對象的唯一,并判斷是不是同一個對象呢?

依據hashCode和equals進行判斷,所以Set存儲的對象必須重寫這兩個方法 判斷兩個對象是否一樣,首先判斷插入obj的hashCode值是否存在,hashCode值不存在則直接插入集合,值存在則還需要判斷equals方法判斷對象是否相等

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 红桃成人少妇网站 | 国久久久 | 国产极品视频在线观看 | v片网站| 另类色| 天堂资源av | 精品中文字幕一区二区三区 | 欧美精品一二三区 | 国产免费一区二区三区四区五区 | 欧美 日本 国产 | 欧美成人一区二区三区片免费 | 美女久久久 | 欧洲精品乱码久久久久蜜桃 | 亚州精品天堂中文字幕 | 国产亚洲精品久久久久久久久 | 日韩午夜| 午夜影院在线观看版 | 精品欧美一区二区在线观看视频 | 国产三级网站 | 极黄视频| 欧美顶级毛片在线播放 | 国产精一区| 日韩一区二区在线视频 | 欧美猛交ⅹxxx乱大交视频 | 国产欧美在线视频 | 另类天堂av| 欧美一级特黄aaaaaa大片在线观看 | 九九久久久 | 亚洲一区久久 | 太平公主一级艳史播放高清 | 亚洲精品免费在线 | 久久成人国产精品 | 亚洲国产一区二区三区四区 | 在线观看精品视频网站 | 久操不卡 | 久久人人爽人人爽人人片av不 | 久久久久久久免费 | av一区二区在线观看 | 欧美高清国产 | 久久韩剧网 | 精品久久久久久久久久久久久久 |