您好,登錄后才能下訂單哦!
小編這次要給大家分享的是如何使用Java Objects工具類,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
Objects工具類
jdk 1.7引進(jìn)的工具類,都是靜態(tài)調(diào)用的方法,jdk 1.8新增了部分方法
重點方法
equals
用于字符串和包裝對象的比較,先比較內(nèi)存地址,再比較值
deepEquals
數(shù)組的比較,先比較內(nèi)存地址,再比較值,如String、char、byte、int數(shù)組,或者包裝類型Integer等數(shù)組
hashCode
返回對象的hashCode,若傳入的為null,則返回0
hash
傳入可變參數(shù)的所有值得hashCode的總和,底層用Arrays.hashCode
可變參數(shù)
重寫HashCode和Equals
HashCode方法
頂級類Object里面的方法,所有類都是繼承Object的,返回值int類型
根據(jù)一定的hash規(guī)則(存儲地址,字段,或者長度等),映射成一個數(shù)值,即散列值
Equals方法
頂級類Object里面的方法,所有類都是繼承Object的,返回值boolean類型
根據(jù)自定義的匹配規(guī)則,用于匹配兩個對象是否一樣,一般邏輯
//判斷地址是否⼀樣
//⾮空判斷和class類型判斷
//強(qiáng)轉(zhuǎn)
//對象⾥⾯的字段⼀⼀匹配
重寫規(guī)則
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); } }
問題:當(dāng)向集合中插入對象時,如何判別在集合中是否已經(jīng)存在該對象,比如Set確保存儲對象的唯一,并判斷是不是同一個對象呢?
看完這篇關(guān)于如何使用Java Objects工具類的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。