结果是 4 3 2,我不知道为什么。 for 如何与堆栈/队列/列表一起使用?我并不是为这段代码寻找更好的选择(因为我已经知道它们),我只是想知道这个代码是如何工作的。
class Stack_1 {
public static void main(String [] args) {
Stack s = new Stack();
List l= new LinkedList();
for(int i = 0; i < 5; i++)
s.add(i);
for(int i = 0; i < l.size(); i++)
s.push(l.remove(i));//this does nothing
for(int i = 0; i < s.size(); i++)
System.out.print(" "+ s.pop() );
}
}
最佳答案
如果您对最后一个循环感兴趣,它会迭代 5 次,因为您要从 0 到堆栈的大小(如果您想知道这一点,第一个循环就是填充堆栈的循环)。在每次迭代中,您在堆栈上调用 pop
,这会删除并返回顶部的元素。因此,在循环之前,您的堆栈是 [4,3,2,1,0]
在第一次迭代之后 [3,2,1,0]
然后 [ 2,1,0]
等等。在每次迭代中,您还会打印删除的顶部值,这就是您在控制台上看到它的原因。循环终止后,堆栈将为空。希望对您有所帮助。
关于java - 与 For 行为堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41656763/