Java集合框架之LinkedHashSet類解讀
一、LinkedHashSet 類的介紹
LinkedHashSet是HashSet的 有序版本 ,它跨所有元素維護(hù)一個(gè)雙向鏈接的List。
- 當(dāng)需要 維護(hù)迭代順序時(shí) ,就使用這個(gè)類。
- 當(dāng)遍歷HashSet時(shí),順序是不可預(yù)測(cè)的,而LinkedHashSet允許我們按插入元素的順序遍歷元素。
- 當(dāng)使用迭代器循環(huán)使用LinkedHashSet時(shí),元素將按插入的順序返回。
LinkedHashSet的層次結(jié)構(gòu)如下:

LinkedHashSet類聲明:
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable
LinkedHashSet類的要點(diǎn)如下:
- LinkedHashSet類只包含HashSet這樣的唯一元素。
- LinkedHashSet類提供了所有可選的集操作,并允許有空元素。
- LinkedHashSet類是非同步的。
- LinkedHashSet類維護(hù)插入順序。
Java LinkedHashSet類的構(gòu)造函數(shù):
| Constructor | Description |
| HashSet() | 它用于構(gòu)造一個(gè)默認(rèn)的HashSet。 |
| HashSet(Collection c) | 它使用集合c中的元素來(lái)初始化散列集。 |
| LinkedHashSet(int capacity) | 它用于將鏈接哈希集的容量初始化為給定的整數(shù)值容量。 |
| LinkedHashSet(int capacity, float fillRatio) | 它用于根據(jù)其參數(shù)初始化散列集的容量和填充比例(也稱為負(fù)載容量)。 |
二、LinkedHashSet 類的操作
在LinkedHashSet類上執(zhí)行各種操作
2.1 添加操作
為了向LinkedHashSet添加元素,可以使用add()方法。
這與HashSet不同,因?yàn)樵贖ashSet中,插入順序不保留,而是保留在LinkedHashSet中。
public static void main(String[] args) {
// 創(chuàng)建
LinkedHashSet<String> hs = new LinkedHashSet<String>();
// 添加元素
// 插入是有序的
hs.add("深圳");
hs.add("廣州");
hs.add("東莞");
// 輸出
System.out.println("LinkedHashSet : " + hs);
}輸出:
LinkedHashSet : [深圳, 廣州, 東莞]
2.2 刪除操作
可以使用remove()方法從LinkedHashSet中刪除這些值。
實(shí)例:
public static void main(String[] args) {
// 創(chuàng)建
LinkedHashSet<String> hs = new LinkedHashSet<String>();
// 添加元素
// 插入是有序的
hs.add("深圳");
hs.add("廣州");
hs.add("東莞");
// 輸出
System.out.println("LinkedHashSet : " + hs);
// 刪除 元素: 深圳
hs.remove("廣州");
System.out.println("刪除后的集合:"+hs);
}輸出:
LinkedHashSet : [深圳, 廣州, 東莞]
刪除后的集合:[深圳, 東莞]
2.3 迭代操作
使用iterator()方法迭代LinkedHashSet的元素。
最著名的方法是使用增強(qiáng)的for循環(huán)。
實(shí)例:
public static void main(String[] args) {
// 創(chuàng)建
LinkedHashSet<String> hs = new LinkedHashSet<String>();
// 添加元素
// 插入是有序的
hs.add("深圳");
hs.add("廣州");
hs.add("東莞");
// 輸出
System.out.println("LinkedHashSet : " + hs);
// 使用迭代器
Iterator itr = hs.iterator();
while (itr.hasNext())
System.out.print(itr.next() + ", ");
// 換行
System.out.println();
// 使用 for-each
for (String s : hs)
System.out.print(s + ", ");
System.out.println();
}輸出:
LinkedHashSet : [深圳, 廣州, 東莞]
深圳, 廣州, 東莞,
深圳, 廣州, 東莞,
三、LinkedHashSet 類的API
在類java.util.AbstractSet中聲明的方法
| METHOD | DESCRIPTION |
| equals() | 用于驗(yàn)證對(duì)象與HashSet是否相等并比較它們。只有當(dāng)兩個(gè)HashSet都包含相同的元素時(shí),該列表才會(huì)返回true,無(wú)論順序如何。 |
| hashcode() | 返回此集合的散列代碼值。 |
| removeAll(collection) | 此方法用于刪除集合中存在于集合中的所有元素。如果該集合因調(diào)用而發(fā)生更改,則此方法返回true。 |
在類java.util.AbstractCollection中聲明的方法
| METHOD | DESCRIPTION |
| addAll(collection) | 此方法用于將上述集合中的所有元素追加到現(xiàn)有集合。元素是隨機(jī)添加的,不遵循任何特定的順序。 |
| containsAll(collection) | 此方法用于檢查集合是否包含給定集合中的所有元素。如果集合包含所有元素,則該方法返回true;如果缺少任何元素,則返回false。 |
| retainAll(collection) | 此方法用于保留集合中給定集合中提到的所有元素。如果該集合因調(diào)用而發(fā)生更改,則此方法返回true。 |
| toArray() | 此方法用于形成與Set的相同元素的數(shù)組。 |
| toString() | Java HashSet的toString()方法用于返回HashSet集合元素的字符串表示形式。 |
接口java.util.Collection中聲明的方法
| METHOD | DESCRIPTION |
| parallelStream() | 返回一個(gè)可能并行的流,并將此集合作為其源。 |
| removeIf(Predicate<? super E> filter) | 刪除此集合中滿足給定謂詞的所有元素。 |
| stream() | 返回一個(gè)序列流,并將此集合作為其源。 |
在類java.util.HashSet中聲明的方法
| METHOD | DESCRIPTION |
| add(E e) | 用于添加指定的元素,如果該元素不存在,則返回false。 |
| clear() | 用于從集合中刪除所有元素。 |
| contains(Object o) | 用于當(dāng)元素在set中出現(xiàn)時(shí)返回true。 |
| remove(Object o) | 用于刪除集合中存在的元素。 |
| iterator() | 用于返回一個(gè)遍歷集合中元素的迭代器。 |
| isEmpty() | 用于檢查集合是否為空。如果為空則返回true,如果set的條件非空則返回false。 |
| size() | 用于返回集合的大小。 |
| clone() | 用于創(chuàng)建該集合的淺副本。 |
接口java.lang.Iterable中聲明的方法
| METHOD | DESCRIPTION |
| forEach(Consumer action) | 對(duì)Iterable中的每個(gè)元素執(zhí)行給定的操作,直到所有元素都被處理完或該操作引發(fā)異常。 |
到此這篇關(guān)于Java集合框架之LinkedHashSet類解讀的文章就介紹到這了,更多相關(guān)Java集合LinkedHashSet內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java同時(shí)配置多個(gè)數(shù)據(jù)庫(kù)的完整步驟
在當(dāng)今的數(shù)據(jù)驅(qū)動(dòng)時(shí)代,應(yīng)用程序往往需要連接多個(gè)數(shù)據(jù)庫(kù)以便獲取和處理數(shù)據(jù),這篇文章主要介紹了java同時(shí)配置多個(gè)數(shù)據(jù)庫(kù)的完整步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-09-09
SpringBoot?thymeleaf實(shí)現(xiàn)餅狀圖與柱形圖流程介紹
這篇文章主要介紹了SpringBoot?thymeleaf實(shí)現(xiàn)餅狀圖與柱形圖流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-12-12
解決使用IDEA時(shí)跳轉(zhuǎn)到.class的問(wèn)題
這篇文章主要介紹了解決使用IDEA時(shí)跳轉(zhuǎn)到.class的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
idea web項(xiàng)目沒(méi)有小藍(lán)點(diǎn)的的兩種解決方法
本文主要介紹了idea web項(xiàng)目沒(méi)有小藍(lán)點(diǎn)的的兩種解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
java Class文件結(jié)構(gòu)解析常量池字節(jié)碼
這篇文章主要為大家介紹了java Class文件的整體結(jié)構(gòu)解析常量池字節(jié)碼詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
利用Spring Session和redis對(duì)Session進(jìn)行共享詳解
這篇文章主要給大家介紹了關(guān)于利用Spring、Session和redis對(duì)Session進(jìn)行共享的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09

