【发布时间】:2022-01-08 04:02:37
【问题描述】:
Java | Stack 中的 peek() 和 lastElement() 方法有什么区别。 两者都可以返回栈顶元素,是否有性能差异或其他原因?
【问题讨论】:
Java | Stack 中的 peek() 和 lastElement() 方法有什么区别。 两者都可以返回栈顶元素,是否有性能差异或其他原因?
【问题讨论】:
这两种方法的唯一区别是在堆栈为空的情况下抛出的异常的类。使用您喜欢的任何一个。 JDK 8 中的标准实现大致相同,因此不会有可衡量的性能差异。
Stack 提供相同方法的第二个版本的原因可能是 peek、pop 和 push 传统上与编程堆栈相关联。
来自 java/util/Stack.java
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
并来自 java/util/Vector.java
public synchronized E lastElement() {
if (elementCount == 0) {
throw new NoSuchElementException();
}
return elementData(elementCount - 1);
}
【讨论】: