大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Javaset集合的簡單匯總

Javaset集合的簡單匯總

更新時間:2021-05-21 16:49:43 來源:動力節點 瀏覽920次

Set接口簡介

Set接口和List接口一樣,同樣繼承自Collection接口,它與Collection接口中的方法基本一致,并沒有對Collection接口進行功能上的擴充,它是比Collection接口更加嚴格了。與List接口不同的是,Set接口元素無序,并且都會以某種規則保證存入的元素不出現重復。

Set接口主要有兩個實現類,分別是HashSet和TreeSet。其中,HashSet根據對象的哈希值來確定元素在集合中的存儲位置,因此具有良好的存取和查找性能。TreeSet則是以二叉樹的方式來存儲元素,它可以實現對集合中的元素進行排序

HashSet集合

HashSet是Set接口的一個實現類,它所存儲的元素是不可重復的,并且元素都是無序的。當向HashSet集合中添加一個對象時,首先會調用該對象的hashCode()方法來計算對象的哈希值,從而確定元素的存儲位置。如果此哈希值相同,再調用對象的equals()方法來確保該位置沒有重復元素。Set集合與List集合存取元素的方式都一樣。

通過一個案例來演示HashSet集合的用法:

public class Example01 {
  public static void main(String[] args) {
    HashSet set = new HashSet();
    set.add("老大");
    set.add("老二");
    set.add("老三");
    set.add("老二");
    Iterator it = set.iterator();
    while(it.hasNext()) {
      Object obj = it.next();
      System.out.println(obj);
    }
  }
}

結論:

當向集合中存入元素時,為了保證HashSet正常工作,要求在存入對象時,重寫Object類中的hashCode和equals()方法。

上述案例將字符串存入HashSet時,String類已經重寫了hashCode()和equals()方法。但是如果將Student對象存入HashSet,結果又會怎樣呢?

class Student{
  String id;
  String name;
  public Student(String id, String name) {
    super();
    this.id = id;
    this.name = name;
  }
  @Override
  public String toString() {
    return id+":"+name;
  }
  @Override
  public int hashCode() {
    return id.hashCode();    //返回id屬性的哈希值
  }
  @Override
  public boolean equals(Object obj) {
    if(this == obj) {    //判斷是否是同一個對象
      return true;    //如果是,直接返回true
    }
    if(!(obj instanceof Student)) {    //判斷對象是為Student類型
      return false;    //如果對象不是Student類型返回false
    }
    Student stu = (Student) obj;    //將對象強轉為Student類型
    boolean b = this.id.equals(stu.id);    //判斷id值是否相同
    return b;  //返回判斷結果
  }
}
public class Example02 {
  public static void main(String[] args) {
    HashSet set = new HashSet();
    set.add(new Student("1", "老王"));
    set.add(new Student("2", "老三"));
    set.add(new Student("2", "老三"));
    System.out.println(set);
  }
}

Student類重寫了Object類的hashCode()和equals()方法。在hashCoded()方法中返回id屬性的哈希值,在equals()方法中比較對象的id屬性是否相等,并返回結果。當調用HashSet集合的add()方法添加stu3對象時,發現它的哈希值與stu2對象相同,而且stu2.equals(stu3)返回true。HashSet集合認為兩個對象相同,因此重復的Student對象對成功去除了。

以上就是動力節點小編介紹的"Javaset集合的簡單匯總",希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产精品午夜波多野结衣性色 | 一级毛片免费一级直接观看 | 四虎永久网址在线观看 | 国产精品午夜免费福利视频 | 末成年一级在线看片 | 四虎永久在线观看视频精品 | 日本亚洲精品一区二区三区 | 国产美女一级毛片 | 精品动漫中文字幕一区二区三区 | 在线观看三级拍拍视频 | 亚洲一区在线免费 | 欧美第一区 | 欧美刺激午夜性久久久久久久 | 久久狠色噜噜狠狠狠狠97 | 第一福利在线观看永久视频 | 亚洲人成在线观看 | 日韩欧美一区二区在线观看 | 成人国产在线视频在线观看 | 欧美国产日韩一区二区三区 | 97最新网址 | 亚洲综合视频一区 | 亚洲狠狠色丁香婷婷综合 | 99久久99 | 国内视频精品 | 久久在线资源 | 青青青免费在线视频 | 欧美日韩中文字幕久久伊人 | 最新国产午夜精品视频不卡 | 永久免费观看黄网站 | 日本免费一级视频 | 99久久精品免费看国产高清 | 伊人久久大香 | 亚洲 欧美 另类中文字幕 | 九九精品免费观看在线 | 欧美大交乱xxxxbbbb | 激情综合五月网 | 亚洲欧美人成人综合在线50p | 国产成人三级 | 5060网午夜一级毛片在线看 | 女胁师~牝奴隷调教 | 欧美日韩视频一区二区 |