Java | Stack 中的 peek() 和 lastElement() 方法有什么区别

Java | what is the difference between peek() and lastElement() method in Stack

Java | Stack 中的 peek() 和 lastElement() 方法有什么区别。 他们都可以return栈顶元素,有性能差异还是其他什么?

这两种方法之间的唯一区别是 class 在堆栈为空的情况下抛出的异常。使用您喜欢的任何一个。 JDK 8 中的标准实现或多或少相同,因此不会有可衡量的性能差异。

可能 Stack 提供相同方法的第二个版本的原因可能是词 peekpoppush 传统上与编程堆栈相关联.

来自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);
}