Java集合框架之LinkedHashSet類解讀
一、LinkedHashSet 類的介紹
LinkedHashSet是HashSet的 有序版本 ,它跨所有元素維護一個雙向鏈接的List。
- 當需要 維護迭代順序時 ,就使用這個類。
- 當遍歷HashSet時,順序是不可預測的,而LinkedHashSet允許我們按插入元素的順序遍歷元素。
- 當使用迭代器循環(huán)使用LinkedHashSet時,元素將按插入的順序返回。
LinkedHashSet的層次結構如下:
LinkedHashSet類聲明:
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable
LinkedHashSet類的要點如下:
- LinkedHashSet類只包含HashSet這樣的唯一元素。
- LinkedHashSet類提供了所有可選的集操作,并允許有空元素。
- LinkedHashSet類是非同步的。
- LinkedHashSet類維護插入順序。
Java LinkedHashSet類的構造函數(shù):
Constructor | Description |
HashSet() | 它用于構造一個默認的HashSet。 |
HashSet(Collection c) | 它使用集合c中的元素來初始化散列集。 |
LinkedHashSet(int capacity) | 它用于將鏈接哈希集的容量初始化為給定的整數(shù)值容量。 |
LinkedHashSet(int capacity, float fillRatio) | 它用于根據(jù)其參數(shù)初始化散列集的容量和填充比例(也稱為負載容量)。 |
二、LinkedHashSet 類的操作
在LinkedHashSet類上執(zhí)行各種操作
2.1 添加操作
為了向LinkedHashSet添加元素,可以使用add()方法。
這與HashSet不同,因為在HashSet中,插入順序不保留,而是保留在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中刪除這些值。
實例:
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的元素。
最著名的方法是使用增強的for循環(huán)。
實例:
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() | 用于驗證對象與HashSet是否相等并比較它們。只有當兩個HashSet都包含相同的元素時,該列表才會返回true,無論順序如何。 |
hashcode() | 返回此集合的散列代碼值。 |
removeAll(collection) | 此方法用于刪除集合中存在于集合中的所有元素。如果該集合因調用而發(fā)生更改,則此方法返回true。 |
在類java.util.AbstractCollection中聲明的方法
METHOD | DESCRIPTION |
addAll(collection) | 此方法用于將上述集合中的所有元素追加到現(xiàn)有集合。元素是隨機添加的,不遵循任何特定的順序。 |
containsAll(collection) | 此方法用于檢查集合是否包含給定集合中的所有元素。如果集合包含所有元素,則該方法返回true;如果缺少任何元素,則返回false。 |
retainAll(collection) | 此方法用于保留集合中給定集合中提到的所有元素。如果該集合因調用而發(fā)生更改,則此方法返回true。 |
toArray() | 此方法用于形成與Set的相同元素的數(shù)組。 |
toString() | Java HashSet的toString()方法用于返回HashSet集合元素的字符串表示形式。 |
接口java.util.Collection中聲明的方法
METHOD | DESCRIPTION |
parallelStream() | 返回一個可能并行的流,并將此集合作為其源。 |
removeIf(Predicate<? super E> filter) | 刪除此集合中滿足給定謂詞的所有元素。 |
stream() | 返回一個序列流,并將此集合作為其源。 |
在類java.util.HashSet中聲明的方法
METHOD | DESCRIPTION |
add(E e) | 用于添加指定的元素,如果該元素不存在,則返回false。 |
clear() | 用于從集合中刪除所有元素。 |
contains(Object o) | 用于當元素在set中出現(xiàn)時返回true。 |
remove(Object o) | 用于刪除集合中存在的元素。 |
iterator() | 用于返回一個遍歷集合中元素的迭代器。 |
isEmpty() | 用于檢查集合是否為空。如果為空則返回true,如果set的條件非空則返回false。 |
size() | 用于返回集合的大小。 |
clone() | 用于創(chuàng)建該集合的淺副本。 |
接口java.lang.Iterable中聲明的方法
METHOD | DESCRIPTION |
forEach(Consumer action) | 對Iterable中的每個元素執(zhí)行給定的操作,直到所有元素都被處理完或該操作引發(fā)異常。 |
到此這篇關于Java集合框架之LinkedHashSet類解讀的文章就介紹到這了,更多相關Java集合LinkedHashSet內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java?LocalDateTime獲取時間信息、格式化、轉換為數(shù)字時間戳代碼示例
其實我們在Java項目中對日期進行格式化,主要是利用一些日期格式化類,下面這篇文章主要給大家介紹了關于Java?LocalDateTime獲取時間信息、格式化、轉換為數(shù)字時間戳的相關資料,需要的朋友可以參考下2023-11-11Java?常量池詳解之class文件常量池?和class運行時常量池
這篇文章主要介紹了Java?常量池詳解之class文件常量池?和class運行時常量池,常量池主要存放兩大類常量:字面量,符號引用,本文結合示例代碼對java class常量池相關知識介紹的非常詳細,需要的朋友可以參考下2022-12-12SpringBoot3整合SpringDoc實現(xiàn)在線接口文檔的詳細過程
這篇文章主要介紹了SpringBoot3整合SpringDoc實現(xiàn)在線接口文檔的詳細過程,本文通過示例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-06-06SpringBoot配置Druid數(shù)據(jù)監(jiān)控代碼實例
這篇文章主要介紹了SpringBoot配置Druid數(shù)據(jù)監(jiān)控代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-06-06Java 實戰(zhàn)練手項目之校園超市管理系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+Mysql+Maven+Bootstrap實現(xiàn)一個校園超市管理系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11Springcloud+Mybatis使用多數(shù)據(jù)源的四種方式(小結)
這篇文章主要介紹了Springcloud+Mybatis使用多數(shù)據(jù)源的四種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09