2016-09-18 95 views
2

Java使用Vector實現Stack類,爲什麼?儘管看起來Arraylist應該是更好的選擇。 Java希望堆棧是線程安全的,還是一般堆棧(我認爲不是這種情況)是線程安全的還是強制性的,或者有任何其他理論使用Vector來實現Java堆棧?爲什麼java.util.Stack是使用Vector實現的而不是Arraylist

+0

可能的重複[ArrayList和Vector之間有什麼區別?](http://stackoverflow.com/questions/2986296/what-are-the-differences-between-arraylist-and-vector) –

+1

因爲Stack和在JDK 1.0中,Vector在Java中同時引入了麻煩,並且在JDK1.2中引入了ArrayList很久之後 –

回答

3

StackVector出現在JDK 1.0中。直到JDK 1.2才加入ArrayListStackVector的繼承被烘焙到API中,所以現在不可能改變。

但是這是一個過時的類,反正。解決它不是一個優先事項。 Stack自己的Javadoc新手必看說:

更完整和一致的LIFO堆棧操作是由Deque接口和它的實現,應優先使用這個類提供。例如:

Deque<Integer> stack = new ArrayDeque<Integer>(); 
2

我懷疑這僅僅是歷史性的。 java.util.Stack自Java 1.0以來一直存在,ArrayList直到1.2才被引入。 Vector是他們在實施時的全部功能。

爲什麼不在1.2中改變它?那麼,Sun和甲骨文一直非常小心地讓Java向後兼容,並且從線程安全轉向不是線程安全的突破。

相關問題