1. 程式人生 > 其它 >JAVA 集合(Set)

JAVA 集合(Set)

技術標籤:javajava

開發工具與關鍵技術:JAVA      Set 
作者:聽民謠的老貓
撰寫時間:2020/12/28 15:30

Set集合體繫結構:

*

Set特點:存入集合的順序和取出集合的順序不一致 ,沒有索引 ,存入集合的元素沒有重複。

HashSet集合

public class HashSetDemo {

public static void main(String[] args) {

//建立集合物件

//Set set = new HashSet();

HashSet<String> set = new HashSet<String>();

//新增元素

set.add("hello");

set.add("world");

}

}

隨堂筆記:

* 通過檢視原始碼發現:

* HashSetadd()方法,首先會使用當前集合中的每一個元素和新新增的元素進行hash值比較,

* 如果hash值不一樣,則直接新增新的元素

* 如果hash值一樣,比較地址值或者使用equals方法進行比較

* 比較結果一樣,則認為是重複不新增

* 所有的比較結果都不一樣則新增

HashSetArrayList add比較:

ArrayList:

public class HashSetDemo {

public static void main(String[] args) {

//建立集合物件

ArrayList al = new ArrayList();

//新增元素

al.add("hello");

al.add("world");

al.add("world");

}

}

遍歷集合:

HashSet

public class HashSetDemo {

public static void main(String[] args) {

//建立集合物件

//Set set = new HashSet();

HashSet<String> set = new HashSet<String>();

//新增元素

set.add("hello");

set.add("world");

set.add("world");

}

}

遍歷集合:

ArrayList新增能重複是因為ArrayList採用連結串列結構,它的新增只需要修改下個元素的地址即可。

HashSet 新增一樣,比較hash值,地址值或者使用equals方法進行比較比較結果一樣,則認為是重複不新增,所有的比較結果都不一樣則新增

HashSet唯一性原理

規則:新新增到HashSet集合的元素都會與集合中已有的元素一一比較

首先比較雜湊值(每個元素都會呼叫hashCode()產生一個雜湊值)

如果新新增的元素與集合中已有的元素的雜湊值都不同,新新增的元素存入集合

如果新新增的元素與集合中已有的某個元素雜湊值相同,此時還需要呼叫equals(Object obj)比較

如果equals(Object obj)方法返回true,說明新新增的元素與集合中已有的某個元素的屬性值相同,那麼新新增的元素不存入集合

如果equals(Object obj)方法返回false, 說明新新增的元素與集合中已有的元素的屬性值都不同, 那麼新新增的元素存入集合