在Java中使用基于Vector的Stack实现而不是链表的动机是什么?

vpi*_*mph 2 java algorithm linked-list data-structures

在链接列表实现中使用Vector基于StackJava 的实现的动机是什么?我意识到一个Vector是同步的并且具有继承优势(和开销),但我觉得这些数据结构通常不仅在文本中被教导为基于链表的结构,而且LL避免了昂贵的调整大小,因为底层数组填充.

我确实理解Vectors,使用摊销分析,即使调整大小,也是O(1).因此,考虑到这一点并没有太大的区别,但我很想知道理由.

Oli*_*rth 6

链接列表具有以下缺点:

  • 每元素存储开销
  • 必须遵循从元素到元素的指针/引用的计算复杂性
  • 缓存局部性不好

当然,这些只是链表的一般缺点; 我不知道他们是否影响了决定什么基础QueueStack依据.