我不是问java中怎么实现stack,而是java中stack类是怎么实现的?它使用链表吗?如果是这样,那么如果我确切地知道我要处理多少个元素,使用数组模拟堆栈不是更好,它会比 java 实现堆栈类的方式更快吗?
根据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-class java-doc:
Vector 类实现了一个可增长的对象数组。像数组一样,它包含可以使用整数索引访问的组件。但是,Vector 的大小可以根据需要增加或缩小,以适应在创建 Vector 后添加和删除项目。
但还有更多:
从 Java 2 平台 v1.2 开始,该类经过改造以实现 List 接口,使其成为 Java Collections Framework 的成员。与新的集合实现不同,Vector 是同步的。
同步意味着效率的额外损失(但通常可以忽略)。
所以是的,如果您只需要“存储”功能,您可以使用数组和偏移量来提高效率。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句