大佬的了解-> 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添加一個元素的過程
此處原文連結
- 調用對象的hashCode()方法擷取對象的哈希值;
- 根據對象的哈希值計算對象的存儲位置;
- 判斷該位置是否有元素,如果沒有元素則将元素存儲到該位置;如果有元素則周遊該位置的所有元素,和新存入的元素比較哈希值是否相同,如果都不相同則将元素存儲到該位置;如果有相同的,則調用equals()方法比較對象内容是否相等;
- 如果傳回false則将元素存儲到該位置,如果傳回true則說明元素重複,不存儲;
6.2 流程圖

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