Java的LinkedHashSet解析
LinkedHashSet
LinkedHashSet用的也比較少,其也是基于Set的實(shí)現(xiàn)。
1 LinkedHashSet繼承關(guān)系
和HashSet一樣,其也是Set接口的實(shí)現(xiàn)類,并且是HashSet的子類。
2 LinkedHashSet源碼
package java.util; public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable { private static final long serialVersionUID = -2851667679971038690L; public LinkedHashSet(int initialCapacity, float loadFactor) { //調(diào)用HashSet的構(gòu)造方法 super(initialCapacity, loadFactor, true); } public LinkedHashSet(int initialCapacity) { super(initialCapacity, .75f, true); } public LinkedHashSet() { super(16, .75f, true); } public LinkedHashSet(Collection<? extends E> c) { super(Math.max(2*c.size(), 11), .75f, true); addAll(c); } @Override public Spliterator<E> spliterator() { return Spliterators.spliterator(this, Spliterator.DISTINCT | Spliterator.ORDERED); } }
其操作方法和HashSet完全一樣,那么二者區(qū)別是什么呢?
1.首先LinkedHashSet是HashSet的子類。
2.LinkedHashSet中用于存儲(chǔ)值的實(shí)現(xiàn)LinkedHashMap,而HashSet使用的是HashMap。
LinkedHashSet中調(diào)用的父類構(gòu)造器,可以看到其實(shí)列是一個(gè)LinkedHashMap。
HashSet(int initialCapacity, float loadFactor, boolean dummy) { map = new LinkedHashMap<>(initialCapacity, loadFactor); }
LinkedHashSet的實(shí)現(xiàn)很簡單,更深入的了解需要去看LinkedHashMap的實(shí)現(xiàn),對(duì)LinkedHashMap的解析將單獨(dú)提出。
實(shí)現(xiàn)
LinkedHashSet底層使用LinkedHashMap存儲(chǔ)元素。
LinkedHashSet是有序的,它是按照插入順序排序的。
public LinkedHashSet() { super(16, .75f, true); } HashSet(int initialCapacity, float loadFactor, boolean dummy) { map = new LinkedHashMap<>(initialCapacity, loadFactor); }
LinkedHashSet中沒有定義如添加、刪除等方法,調(diào)用的都是父類HashSet中的方法
不支持按訪問順序訪問,只能按插入順序訪問。
用法
import java.util.*; public class Test { public static void main(String[] args) { LinkedHashSet<Integer> set = new LinkedHashSet<>(); set.add(3); set.add(1); System.out.println(set.toString()); }
到此這篇關(guān)于Java的LinkedHashSet解析的文章就介紹到這了,更多相關(guān)LinkedHashSet解析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JAVA實(shí)現(xiàn)Excel和PDF上下標(biāo)的操作代碼
這篇文章主要介紹了JAVA實(shí)現(xiàn)Excel和PDF上下標(biāo),本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09mybatis和mybatis-plus設(shè)置值為null不起作用問題及解決
Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查詢時(shí)對(duì)空值的處理策略,通過配置不同的策略類型,可以靈活地處理實(shí)體對(duì)象的空值問題2025-02-02spring?bean標(biāo)簽中的init-method和destroy-method詳解
這篇文章主要介紹了spring?bean標(biāo)簽中的init-method和destroy-method,在很多項(xiàng)目中,經(jīng)常在xml配置文件中看到init-method 或者 destroy-method ,因此整理收集下,方便以后參考和學(xué)習(xí),需要的朋友可以參考下2023-04-04Spring?Boot中的過濾器攔截器監(jiān)聽器使用技巧匯總
本文將介紹在Spring?Boot應(yīng)用程序中使用過濾器、攔截器和監(jiān)聽器的使用技巧,我們將討論它們之間的區(qū)別,以及何時(shí)使用它們,我們還將提供代碼示例,以幫助您在自己的應(yīng)用程序中使用它們2023-12-12