gpt4 book ai didi

java - 这是堆栈还是堆栈模拟?

转载 作者:行者123 更新时间:2023-12-02 02:26:16 24 4
gpt4 key购买 nike

package java.util;
public
class Stack<E> extends Vector<E> {
public Stack() {
}

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

public synchronized E pop() {
E obj;
int len = size();

obj = peek();
removeElementAt(len - 1);

return obj;
}

public synchronized E peek() {
int len = size();

if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}

public synchronized int search(Object o) {
int i = lastIndexOf(o);

if (i >= 0) {
return size() - i;
}
return -1;
}


private static final long serialVersionUID = 1224463164541339165L;
}

以上是栈的java源代码。我意识到它只是模拟堆栈而不是真实的堆栈。所以我的问题是

  1. 我说这只是 Stack 的模仿品,而不是真正的 Stack,对吗?
  2. 如果我可以说上面的内容并且我想从头开始构建它,我会怎么做?(固定大小的数组或 arraylist 依次使用列表(单/双链接)?)

最佳答案

  1. 不存在“真正的堆栈”,堆栈只是一个想法,所谓的abstract data type 。它支持两种操作,push 和 pop,元素的顺序定义为后进先出(LIFO)。除了java.util.Stack(基于Vector,它是基于数组的)之外,还有java.util.LinkedList(双向链表),它也支持栈操作,所以它也是一个栈另一个..还有其他几种实现,例如 java.util.Deque 的所有实现。

  2. 您可以通过多种方式从头开始,每种方式都有自己的权衡。您的问题定义不够明确,无法给出好的答案。

关于java - 这是堆栈还是堆栈模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47731893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com