首頁技術(shù)文章正文

Java培訓(xùn):HashSet集合

更新時(shí)間:2022-11-01 來源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  HashSet是Set接口中的一個(gè)實(shí)現(xiàn)類,它所存儲(chǔ)的元素是不可重復(fù)的,并且元素都是無序的。下面通過一個(gè)案例演示HashSet集合的用法,如文件6-7所示。

  文件6-7 Example07.java

import java.util.*;
public class Example07 {
    public static void main (String[] args) {
        Hash set = new HashSet ();          // 創(chuàng)建HashSet集合
        set.add("張三");                    // 向該Set集合中添加字符串
        set.add("李四");
        set.add("王五");
        set.add("李四");                   // 向該Set集合中添加重復(fù)元素
        Iterator it = set.iterator ();    // 獲取Iterator對(duì)象
        while (it.hasNext ()) {           // 通過while循環(huán),判斷集合中是否有元素
         Object obj = it.next ();         // 如果有元素,就通過迭代器的next()方法獲取元素
             System.out.println (obj);
        }
    }
}

  在文件6-7中,第4~8行代碼聲明了一個(gè)HashSet集合并通過add()方法向HashSet集合依次添加了4個(gè)字符串;第9行代碼聲明了一個(gè)迭代器對(duì)象it;第10~13行代碼是通過Iterator迭代器遍歷所有的元素并且輸出。從打印結(jié)果可以看出,取出元素的順序與添加元素的順序并不一致,并且重復(fù)存入的字符串對(duì)象“李四”被去除了,只添加了一次。

  HashSet集合之所以能確保不出現(xiàn)重復(fù)元素,是因?yàn)樗诖嫒朐貢r(shí)做了很多工作。當(dāng)調(diào)用HashSet集合的add()方法存入元素時(shí),首先調(diào)用當(dāng)前存入對(duì)象的hashCode()方法獲得對(duì)象的散列值,然后根據(jù)對(duì)象的散列值計(jì)算出一個(gè)存儲(chǔ)位置。如果該位置上沒有元素,則直接將元素存入,如果該位置上有元素存在,則會(huì)調(diào)用equals()方法讓當(dāng)前存入的元素依次與該位置上的元素進(jìn)行比較,如果返回的結(jié)果為false就將該元素存入集合,返回的結(jié)果為true則說明有重復(fù)元素,將該元素舍棄。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!