Set容器

Set(不能放重復元素) 用foreach或者迭代器進行遍歷

  • HashSet(底層HashMap實現)
  • 用hashcode和equals方法比較兩個對象是否相等
    如果哈希值不相等,那么一定是不同對象,如果相等有可能不是同一對象,這時候還要執行equals方法,所以要想使用HashSet必須要重寫hashcode和equals方法
  • hashcode()->相同的對象需要產生相同hash碼,不同的對象盡量產生不同的hash碼
  • equals() ->比較兩個對象的規則(先比引用,再比類型,再比屬性),一般使用eclipse自動生成,不用自己寫。
    • 自反性(自己和自己比一定為true)
    • 對稱性(若a==b 為true,那么b==a為true)
    • 傳遞性(若a==b 為true, b=c,那么a==c為true)
    • 一致性(不管多少次執行,只返回相同的結果)
  • java堆空間采用hash算法
    如果兩個對象的hash碼相等(沖突),采用桶結構,先用hash碼找到地址, 然后用equals方法在桶中挨個比對。
  • hash函數最有名的兩個是MD5碼和SHA1
  • TreeSet(底層用排序樹實現)去重+排序
  • 因為需要排序所以在使用時對象需要實現Comparable接口
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • Java8張圖 11、字符串不變性 12、equals()方法、hashCode()方法的區別 13、...
    Miley_MOJIE閱讀 3,731評論 0 11
  • 一、基本數據類型 注釋 單行注釋:// 區域注釋:/* */ 文檔注釋:/** */ 數值 對于byte類型而言...
    龍貓小爺閱讀 4,288評論 0 16
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,518評論 0 3
  • 史蒂夫.喬布斯(Steve Jobs)為創新下的定義是:「把不同的要素結合起來。如果你有比別人更多的體驗,或者對自...
    王者之聲閱讀 1,111評論 0 2