stack是集合中對資料結構棧的一種實現,棧的原則是先進先後出,與佇列相反(先進先出)。stack是繼承自vector的,意味著它也是由陣列實現的執行緒安全的,不考慮執行緒安全的情況下完全可以用linkedlist當做棧來使用。
stack的實現很簡單,核心引數和方法都繼承自vector,因為它可以呼叫vector的全部api。
stack實際上也是通過陣列去實現的。
執行push時(即,將元素推入棧中),是通過將元素追加的陣列的末尾中。
執行peek時(即,取出棧頂元素,不執行刪除),是返回陣列末尾的元素。
執行pop時(即,取出棧頂元素,並將該元素從棧中刪除),是取出陣列末尾的元素,然後將該元素從陣列中刪除。
publicclass 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,...