學習JDK1 8集合原始碼之 Stack

2022-09-04 02:36:09 字數 790 閱讀 4923

stack是集合中對資料結構棧的一種實現,棧的原則是先進先後出,與佇列相反(先進先出)。stack是繼承自vector的,意味著它也是由陣列實現的執行緒安全的,不考慮執行緒安全的情況下完全可以用linkedlist當做棧來使用。

stack的實現很簡單,核心引數和方法都繼承自vector,因為它可以呼叫vector的全部api。

stack實際上也是通過陣列去實現的。 

執行push時(即,將元素推入棧中),是通過將元素追加的陣列的末尾中。

執行peek時(即,取出棧頂元素,不執行刪除),是返回陣列末尾的元素。

執行pop時(即,取出棧頂元素,並將該元素從棧中刪除),是取出陣列末尾的元素,然後將該元素從陣列中刪除。

public

class stackextends vector

//將元素存入棧頂

public

e push(e item)

//將棧頂的元素取出並從棧頂移除

public

synchronized

e pop()

//獲取棧頂元素

public

synchronized

e peek()

//判斷棧中元素是否為空

public

boolean

empty()

//查詢元素0在棧中的位置(棧底下標為0開始)

public

synchronized

intsearch(object o)

return -1;

}}

jdk1 8之ArrayList原始碼分析(二)

通過分析原始碼,你會發現,一些你在工作中無法體會到的一些現象,通過原始碼的了解,會擴散你的思維.這一次是講解下arraylist的刪除以及通過角標來新增元素。在檢視刪除方法的時候,remove方法存在兩個過載的方法,乙個是index乙個通過值的形式,進行刪除,public e remove int ...

Vector原始碼解析 jdk1 8

概述 vector實現了list的介面,底層同樣是基於陣列實現的,可以儲存null。功能結構與arraylist的類似,不同的是執行緒安全的。建構函式protected object elementdata protected int capacityincrement public vector ...

ArrayList原始碼分析 JDK1 8

借助工具類arrays,實現陣列複製 elementdata arrays.copyof elementdata,newcapacity 底層呼叫system.arraycopy system.arraycopy original,0,copy,0,math.min original.length,...