天天看點

Java集合架構(三)-HashSet

大佬的了解-> Java集合值HashSet 

1、HashSet特點

存放的元素是無序的(不保證添加元素的順序)
元素唯一(不可以重複)
可以存null,但是隻能存放1個
雖然set集合不保證添加元素的順序,但是集合中存放的元素順序其實是固定的,根據元素的hash值确定的順序

2、HashSet原理分析

HashSet底層,是借助HashMap實作的;

3、HashSet初始化

Set<String> strSet = new HashSet<>();
           

4、HashSet常用方法

方法 說明
size() 結合元素個數
contains(Object o) 集合是否包含某個元素

4.1 size()

// 擷取set集合元素個數方法:size()
           

4.2 contains(Object o)

// 判斷set集合中是否包含某個元素方法:contains(元素)
           

4.3 list的其它常用方法,set中也有,不再介紹

5、HashSet周遊

5.1 疊代器周遊

Set<String> carSet = new HashSet<>();
carSet.add("Bmw325");
carSet.add("BenzC200");
carSet.add("AudiA4");

// 方式一:疊代器周遊
Iterator<String> iterator = carSet.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}
           

5.2 增強for循環

// 方式二:增強for循環
for (String car : carSet) {
   System.out.println(car);
}
           

運作結果:

BenzC200
AudiA4
Bmw325
           

6、HashSet集合是如何确定元素唯一的

6.1 HashSet添加一個元素的過程

此處原文連結

  1. 調用對象的hashCode()方法擷取對象的哈希值;
  2. 根據對象的哈希值計算對象的存儲位置;
  3. 判斷該位置是否有元素,如果沒有元素則将元素存儲到該位置;如果有元素則周遊該位置的所有元素,和新存入的元素比較哈希值是否相同,如果都不相同則将元素存儲到該位置;如果有相同的,則調用equals()方法比較對象内容是否相等;
  4. 如果傳回false則将元素存儲到該位置,如果傳回true則說明元素重複,不存儲;

6.2 流程圖

Java集合架構(三)-HashSet

HashSet集合存儲元素:要保證元素唯一性,需要重寫hashCode()和equals()方法。