为什么这些陈述是平等的?java中的堆栈方法

为什么这些陈述是平等的?java中的堆栈方法,java,stack,equivalent,Java,Stack,Equivalent,为什么下列语句是等价的?emptyRow和emptyCol是整数堆栈,Grid是一个二维整数数组。你不需要知道这个程序是做什么的,但如果你想知道它是一个使用基本回溯的数独解谜算法 这两个语句都允许程序在没有任何bug的情况下运行,但我不明白这是怎么回事,因为.pop()在第一个实现中返回最顶端的整数,而第二个语句首先弹出最顶端的项并直接检索这些项下的整数 报表A: Grid[emptyRow.pop()][emptyCol.pop()] = 0; 报表B: emptyRow.pop(); em

为什么下列语句是等价的?emptyRow和emptyCol是整数堆栈,Grid是一个二维整数数组。你不需要知道这个程序是做什么的,但如果你想知道它是一个使用基本回溯的数独解谜算法

这两个语句都允许程序在没有任何bug的情况下运行,但我不明白这是怎么回事,因为.pop()在第一个实现中返回最顶端的整数,而第二个语句首先弹出最顶端的项并直接检索这些项下的整数

报表A:

Grid[emptyRow.pop()][emptyCol.pop()] = 0;
报表B:

emptyRow.pop();
emptyCol.pop();
Grid[emptyRow.peek()][emptyCol.peek()] = 0;

很抱歉,如果这是我的代码中的一个愚蠢的逻辑问题,我只是检查一下是否有关于堆栈操作如何工作的一些我不知道的地方。

语句a与

Grid[emptyRow.peek()][emptyCol.peek()] = 0;
emptyRow.pop();
emptyCol.pop();
我认为您混淆了顺序,也许在您的用例中这并不重要,但代码不同