JDK原始碼解析 LinkedHashSet

2021-10-09 06:15:41 字數 1128 閱讀 7237

linkedhashset是set集合的乙個實現,具有set集合不重複的特點,同時具有可**的迭代順序,也就是我們插入的順序。

底層實現是linkedhashmap 所以僅在構造方法上和hashset有所區別

linkedhashmap和linkedhashset都可以做到有序,但是不同點在於。linkedhashmap可以根據訪問順序來訪問,也可以根據插入順序來訪問。但是linkedhashset有序的訪問只能是根據插入順序來訪問。

繼承了hashset 和hashset的區別就在於建構函式

實現了set介面、序列化介面、轉殖介面

給定初始容量和裝載因子的建構函式

public

linkedhashset

(int initialcapacity,

float loadfactor)

給定初始容量的建構函式

public

linkedhashset

(int initialcapacity)

無參的建構函式

public

linkedhashset()

給定初始集合元素的建構函式

public

linkedhashset

(collection<

?extends

e> c)

以上的4種建構函式都呼叫了父類的乙個建構函式 如下:

​ 其底層實際是乙個linkedhashmap。而之前在解析hashset原始碼的時候就已經發現,基於hashset的操作基本上都是對內部實現的hashmap進行操作。

所以linkedhashmap同理。呼叫的父類提供的api操作內部的linkedhashset

hashset

(int initialcapacity,

float loadfactor,

boolean dummy)

JDK原始碼解析 ThreadLocal

說明 本文是jdk 1.8版本 1.簡介 threadlocal 又叫做執行緒本地變數,也被稱為執行緒本地儲存。threadlocal 為 變數 在每乙個執行緒中建立 乙個 副本 不是原來變數的引用 每乙個執行緒都會獨自擁有變數副本,而不會相互影響。2.實現方式 1 set 方法,因為執行緒thre...

JDK原始碼解析 StringBuilder

stringbuilder和stringbuffer一樣,都是繼承自抽象類abstractstringbuilder類,也是乙個可變的字串行。stringbuilder和stringbuffer非常相似,甚至有互相相容的api,不過,stringbuilder不是執行緒安全的,這是和stringbu...

JDK原始碼解析 Stack

stack是棧的實現類,棧的特點是先進後出。繼承了vector,重寫了5個方法,對vector進行了擴充套件。繼承了vector 3.1push 呼叫父類的addelement方法,新增到陣列的尾部,也就是棧頂 public e push e item 3.2 pop 出戰操作。public syn...