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)很簡(jiǎ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中沒(méi)有定義如添加、刪除等方法,調(diào)用的都是父類HashSet中的方法
不支持按訪問(wèn)順序訪問(wèn),只能按插入順序訪問(wèn)。
用法
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),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09
mybatis和mybatis-plus設(shè)置值為null不起作用問(wèn)題及解決
Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查詢時(shí)對(duì)空值的處理策略,通過(guò)配置不同的策略類型,可以靈活地處理實(shí)體對(duì)象的空值問(wèn)題2025-02-02
spring?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-04
Spring?Boot中的過(guò)濾器攔截器監(jiān)聽(tīng)器使用技巧匯總
本文將介紹在Spring?Boot應(yīng)用程序中使用過(guò)濾器、攔截器和監(jiān)聽(tīng)器的使用技巧,我們將討論它們之間的區(qū)別,以及何時(shí)使用它們,我們還將提供代碼示例,以幫助您在自己的應(yīng)用程序中使用它們2023-12-12
Java常見(jiàn)面試題之final在java中的作用是什么
這篇文章主要介紹了Java常見(jiàn)面試題之final在java中的作用是什么,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01

