java.util包中的堆栈类

时间:2018-12-10 16:30:48

标签: java

为什么java.util包中的堆栈类是使用数组实现的?为什么不使用链接列表数据结构?

package java.util;

public class Stack<E> extends Vector<E>
{
    private static final long serialVersionUID = 1224463164541339165L;

    protected Object[] elementData; // in Vector Class

    public E push(E paramE)
    {
       addElement(paramE);
       return paramE;
    }

    public synchronized void addElement(E paramE)
    {
      modCount += 1;
      ensureCapacityHelper(elementCount + 1);
      elementData[(elementCount++)] = paramE;
    }

1 个答案:

答案 0 :(得分:5)

    在JDK1中添加了
  1. Stack,在JDK2中添加了LinkedList,实现Stack时LinkedList不存在,

  2. 堆栈是非常老的类,现在最佳实践使用ArrayDeque代替

  3. LinkedList几乎所有情况都比ArrayList差(按性能),请参见Oracle guidethis answer in SO