91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Java Objects工具類

發布時間:2020-08-04 13:59:28 來源:億速云 閱讀:163 作者:小豬 欄目:開發技術

小編這次要給大家分享的是如何使用Java Objects工具類,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

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 Objects工具類的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苍溪县| 潼南县| 宜黄县| 靖宇县| 洛川县| 舞阳县| 沁水县| 博湖县| 凭祥市| 抚顺县| 东源县| 定州市| 信丰县| 平陆县| 社旗县| 嘉峪关市| 榆树市| 高唐县| 林周县| 石河子市| 尤溪县| 内乡县| 永安市| 安阳市| 邵阳市| 富源县| 昭平县| 广丰县| 睢宁县| 辛集市| 寿阳县| 巴楚县| 丘北县| 莱西市| 石楼县| 西安市| 连城县| 吕梁市| 彝良县| 大丰市| 江北区|