java如何实现堆栈?

时间:2019-03-07 06:54:54

标签: java arrays stack

我不是在问如何在Java中实现堆栈,而是由Java如何实现堆栈类? 它使用链表吗? 如果是这样的话,如果我确切知道我要处理多少个元素,使用数组模拟堆栈不是更好吗,它将比java实现堆栈类的速度快吗?

1 个答案:

答案 0 :(得分:1)

根据https://docs.oracle.com/javase/7/docs/api/java/util/Stack.html,Stack类的派生方式如下:

 java.lang.Object
    java.util.AbstractCollection<E>
        java.util.AbstractList<E>
            java.util.Vector<E>
                java.util.Stack<E>

这意味着,堆栈不仅仅是列表(尽管它是一个)。它是一个向量。 从Vector类java-doc中获取:

  

Vector类实现可增长的对象数组。像数组一样,它包含可以使用整数索引访问的组件。但是,Vector的大小可以根据需要增大或缩小,以适应创建Vector之后添加和删除项目的需要。

但是还有更多:

  

从Java 2平台v1.2开始,对该类进行了改进以实现List接口,使其成为Java Collections Framework的成员。与新的集合实现不同,Vector是同步的。

同步意味着效率的额外损失(但通常可以忽略不计)。

因此,是的,如果只需要“存储”功能,则可以使用数组和偏移量以提高效率。