Java堆栈功能差异

时间:2016-04-15 21:22:58

标签: java stack

我试图解决轻编码问题:https://leetcode.com/problems/min-stack/

但我不知道为什么下面的代码不相同:

public void pop() {
    // if (!minStack.isEmpty() && minStack.peek() == stack.peek()){
    //     minStack.pop();
    // }
    // stack.pop();
    int x = stack.pop();
    if (!minStack.isEmpty() && x == minStack.peek()) {
        minStack.pop();
    }
}

当我使用注释代码时,它会出错。这是为什么?

非常感谢你!

1 个答案:

答案 0 :(得分:1)

如果您有一堆基元,那么两者都应该有效,因为您将使用==比较内容。

我假设你有Integer类型的堆栈,在这种情况下==检查引用相等性,同时你应该检查value equality。使用.equals()可能只会解决您的问题。 :)