为什么Stack底层用Vector实现
栈是一个很好用的数据结构,但是你点进去看源码的时候会发现,栈的底层是用Vector实现的。
虽然 Java 中有 Stack 这个类,但是官方文档也说不让用了!
为什么?
因为 Vector 已经过被弃用了,而 Stack 是继承 Vector 的。这是一个历史遗留问题。因为Vector是当初JAVA曾经写得不太行的类,所以Stack也不太行。Vector不行是因为效率不太行,很多方法都用了synchronized修饰,虽然线程安全,但是像ArrayDeque,LinkedList这些线程不安全的,在需要安全的时候也可以用Collections.synchronizedCollection()转化成线程安全的,所以Vector就没什么用处了
如果要使用Stack就用ArrayDueue实现。
Stack<> stack = new ArrayDueue<>();