为什么Stack底层用Vector实现

栈是一个很好用的数据结构,但是你点进去看源码的时候会发现,栈的底层是用Vector实现的。

 

 

 

虽然 Java 中有 Stack 这个类,但是官方文档也说不让用了!

为什么?

因为 Vector 已经过被弃用了,而 Stack 是继承 Vector 的。这是一个历史遗留问题。因为Vector是当初JAVA曾经写得不太行的类,所以Stack也不太行。Vector不行是因为效率不太行,很多方法都用了synchronized修饰,虽然线程安全,但是像ArrayDeque,LinkedList这些线程不安全的在需要安全的时候也可以用Collections.synchronizedCollection()转化成线程安全的,所以Vector就没什么用处了

如果要使用Stack就用ArrayDueue实现。

Stack<> stack = new ArrayDueue<>();

 

posted @ 2020-10-27 19:06  拿着放大镜看世界  阅读(339)  评论(0编辑  收藏  举报