2016-09-18 46 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向后兼容,并且从线程安全转向不是线程安全的突破。

相关问题