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

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

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

IT培訓(xùn)班

  HashSet是Set接口中的一個實現(xiàn)類,它所存儲的元素是不可重復(fù)的,并且元素都是無序的。下面通過一個案例演示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對象
        while (it.hasNext ()) {           // 通過while循環(huán),判斷集合中是否有元素
         Object obj = it.next ();         // 如果有元素,就通過迭代器的next()方法獲取元素
             System.out.println (obj);
        }
    }
}

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

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

分享到:
在線咨詢 我要報名
和我們在線交談!