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

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

Javaset集合的簡(jiǎn)單匯總

更新時(shí)間:2021-05-21 16:49:43 來源:動(dòng)力節(jié)點(diǎn) 瀏覽949次

Set接口簡(jiǎn)介

Set接口和List接口一樣,同樣繼承自Collection接口,它與Collection接口中的方法基本一致,并沒有對(duì)Collection接口進(jìn)行功能上的擴(kuò)充,它是比Collection接口更加嚴(yán)格了。與List接口不同的是,Set接口元素?zé)o序,并且都會(huì)以某種規(guī)則保證存入的元素不出現(xiàn)重復(fù)。

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

HashSet集合

HashSet是Set接口的一個(gè)實(shí)現(xiàn)類,它所存儲(chǔ)的元素是不可重復(fù)的,并且元素都是無序的。當(dāng)向HashSet集合中添加一個(gè)對(duì)象時(shí),首先會(huì)調(diào)用該對(duì)象的hashCode()方法來計(jì)算對(duì)象的哈希值,從而確定元素的存儲(chǔ)位置。如果此哈希值相同,再調(diào)用對(duì)象的equals()方法來確保該位置沒有重復(fù)元素。Set集合與List集合存取元素的方式都一樣。

通過一個(gè)案例來演示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);
    }
  }
}

結(jié)論:

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

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

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) {    //判斷是否是同一個(gè)對(duì)象
      return true;    //如果是,直接返回true
    }
    if(!(obj instanceof Student)) {    //判斷對(duì)象是為Student類型
      return false;    //如果對(duì)象不是Student類型返回false
    }
    Student stu = (Student) obj;    //將對(duì)象強(qiáng)轉(zhuǎn)為Student類型
    boolean b = this.id.equals(stu.id);    //判斷id值是否相同
    return b;  //返回判斷結(jié)果
  }
}
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()方法中比較對(duì)象的id屬性是否相等,并返回結(jié)果。當(dāng)調(diào)用HashSet集合的add()方法添加stu3對(duì)象時(shí),發(fā)現(xiàn)它的哈希值與stu2對(duì)象相同,而且stu2.equals(stu3)返回true。HashSet集合認(rèn)為兩個(gè)對(duì)象相同,因此重復(fù)的Student對(duì)象對(duì)成功去除了。

以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"Javaset集合的簡(jiǎn)單匯總",希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲美女激情视频 | 日本h片a毛片在线播放 | 亚洲成人小视频 | 国产一区二区三区在线免费观看 | 日本亚洲黄色 | 亚洲欧美一区二区三区麻豆 | 黄色69| 四虎影视网址 | 精品视频免费播放 | 九九在线观看免费视频 | 91青青青青青爽在线 | 欧美人与性动交α欧美精品图片 | 亚洲毛片免费在线观看 | 国产精品a人片在线观看 | 国产网红福利 | 久久精品国产清白在天天线 | 一本到亚洲网 | 国产精品久久久久久久免费 | 欧美激情综合 | 视频1区| 动漫精品欧美一区二区三区 | 久久精品国产99久久72 | 男人的天堂在线免费视频 | 欧美一级xxxxⅹ毛片 | 四虎国产成人永久精品免费 | 精品午夜国产在线观看不卡 | 欧美性猛交aa一级 | 免费h片在线观看网址最新 免费v片在线观看无遮挡 | 在线精品日韩一区二区三区 | 天天射日日操 | 亚洲成人视屏 | 亚洲一成人毛片 | 日韩欧美一区二区精品久久 | 久久精品一区二区三区不卡 | 国产色网 | 国产91在线 | 亚洲 | 亚洲欧美日韩高清 | 成人亚洲精品一区二区 | 免费看一级欧美毛片视频 | 91九色麻豆| 亚洲精品啪啪一区二区三区 |