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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HashSet集合

發布時間:2025/3/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HashSet集合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HashSet特點

1.無序,不允許重復(無序指元素順序與添加順序不一致,每次遍歷出來的位置不是恒久不變的)
2.HashSet通過調用hashCode()和equals方法來剔除重復
3.HashSet底層使用的數據結構是哈希表
4.HashSet有初始容量16,加載因子0.75.這兩個參數都可以設置

剔除重復原理

  • 當向集合中添加數據時,自動幫助調用hascode方法 獲取hashcode,結果不相同 則認為是不同對象 添加到集合中 * 如果hashcode中相同 ,再去調用equals方法,再比較一下 來確保一定是同一個對象, 如果內容也相等(即Equals返回true) * 則認為兩個對象完全相同,不添加到集合

剔除規則:

1.未重寫時,HashSet默認是根據內存地址來去除重復的
2.重寫后,根據重寫【hashCode()】和【equals()】方法來剔除重復

練習:
HashSet集合中放多個人類對象 Person 姓名 年齡 性別 ,要求 姓名和年齡相同 則是同一個對象,不允許放進集合

person類

package HashSet; //HashSet集合中放多個人類對象 Person 姓名 年齡 性別 ,要求 姓名和年齡相同 則是同一個對象,不允許放進集合 public class Person {private String name;private int age;private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", sex=" + sex + "]";}public Person(String name, int age, String sex) {super();this.name = name;this.age = age;this.sex = sex;}public Person() {super();}//要求 姓名和年齡相同 則是同一個對象,不允許放進集合@Overridepublic int hashCode() {return this.name.hashCode()+this.age*31;}@Overridepublic boolean equals(Object obj) {if(obj==null){return false;}if(obj==this){return true;}if(obj instanceof Person){Person person=(Person)obj;if(person.name.equals(person.name)&&this.age==person.age){return true;}}return false;} }

測試類

package HashSet;import java.util.HashSet;public class Test {public static void main(String[] args) {HashSet set=new HashSet<>();set.add(new Person("李白",30,"male"));set.add(new Person("李白",30,"female"));set.add(new Person("王勃",30,"male"));System.out.println(set);//遍歷輸出for (Object object : set) {System.out.println(object);}} }

輸出結果

總結

以上是生活随笔為你收集整理的HashSet集合的全部內容,希望文章能夠幫你解決所遇到的問題。

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