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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

第三次学JAVA再学不好就吃翔(part89)--HashSet

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第三次学JAVA再学不好就吃翔(part89)--HashSet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考,有錯必糾


HashSet


HashSet實現了Set接口,由哈希表(實際上是一個 HashMap 實例)支持。它不保證 set 的迭代順序;特別是它不保證該順序恒久不變。此類允許使用 null 元素。


HashSet存儲字符串并遍歷


package com.guiyang.object; import java.util.HashSet;public class Demo1_HashSet {public static void main(String[] args) {HashSet<String> hs = new HashSet<>();boolean b1 = hs.add("a");hs.add("b");boolean b2 = hs.add("a");//向Set集合中存儲重復元素將返回Falsehs.add("110");hs.add("120");hs.add("130");System.out.println(b1);System.out.println(b2);System.out.println(hs);for (String string : hs) {System.out.println(string);}} }

輸出:

true false [110, a, b, 130, 120] 110 a b 130 120

由以上的運行結果,我們可以發現Set集合有:無索引,不可重復,存取不一致的特點。且它重寫了toString方法。


HashSet保證元素唯一性原理


  • HashSet原理
    • 我們使用Set集合的目的是為了去掉重復元素, 如果在存儲時逐個調用equals()方法進行比較, 那么存儲效率會很低,而哈希算法則提高了去重復的效率, 降低了使用equals()方法的次數;
    • 當HashSet調用add()方法存儲對象的時候, 先調用對象的hashCode()方法得到一個哈希值, 然后在集合中查找是否有哈希值相同的對象:
      • 如果沒有哈希值相同的對象就直接存入集合;
      • 如果有哈希值相同的對象, 就和哈希值相同的對象逐個進行equals()比較,比較結果為false就存入, true則不存儲。
  • 將自定義類的對象存入HashSet去重復
    • 類中必須重寫hashCode()和equals()方法;
    • hashCode():屬性相同的對象返回值一定相同, 屬性不同的返回值很可能不同(提高效率);
    • equals(): 屬性相同返回true, 屬性不同返回false,返回值為false時,存儲該對象。

LinkedHashSet


具有可預知迭代順序的 Set 接口的哈希表和鏈接列表實現。此實現與 HashSet 的不同之外在于,后者維護著一個運行于所有條目的雙重鏈接列表。此鏈接列表定義了迭代順序,即按照將元素插入到 set 中的順序(插入順序)進行迭代。

簡而言之,就是既保證元素唯一性,也保證元素存儲順序


  • 舉個例子
package com.guiyang.restudy3; import java.util.LinkedHashSet;public class D2LinkedHashSet {public static void main(String[] args) {LinkedHashSet<String> lhs = new LinkedHashSet<>();lhs.add("a");lhs.add("a");lhs.add("a");lhs.add("a");lhs.add("b");lhs.add("c");lhs.add("d");System.out.println(lhs);} }

輸出:

[a, b, c, d]

總結

以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part89)--HashSet的全部內容,希望文章能夠幫你解決所遇到的問題。

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