LinkedList提供如下方法:(ArrayList無此類方法)java
addFirst(); 面試
removeFirst();數組
addLast();安全
removeLast();併發
在堆棧中,push爲入棧操做,pop爲出棧操做。線程
Push用addFirst();pop用removeFirst(),實現後進先出。接口
用isEmpty()--其父類的方法,來判斷棧是否爲空。隊列
在隊列中,put爲入隊列操做,get爲出隊列操做。資源
Put用addFirst(),get用removeLast()實現隊列。rem
List接口的實現類(Vector)(與ArrayList類似,區別是Vector是重量級的組件,使用使消耗的資源比較多。)
結論:在考慮併發的狀況下用Vector(保證線程的安全)。
在不考慮併發的狀況下用ArrayList(不能保證線程的安全)。
面試經驗(知識點):
java.util.stack(stack即爲堆棧)的父類爲Vector。但是stack的父類是最不該該爲Vector的。由於Vector的底層是數組,且Vector有get方法(意味着它可能訪問到並不屬於最後一個位置元素的其餘元素,很不安全)。
對於堆棧和隊列只能用push類和get類。
Stack類之後不要輕易使用。
!!!實現堆棧必定要用LinkedList。
(在JAVA1.5中,collection有queue來實現隊列。)