java - 与 For 行为堆叠

标签 java stack

结果是 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/

相关文章:

java - 在包含 NULL 的 ArrayList 上使用 map {} 时出现 NPE

python - 在Python中解析文本并返回不匹配括号的列表

c - 从 C 中的任何线程获取调用堆栈

recursion - 递归函数和内存栈是什么关系?

java - EJB3Unit 保存功能并没有真正保存我的实体

java - 如何在Android中设计一个简单的游戏 map ?

java - 检查 QWERTY 键盘中连续字母的算法

c - 在函数返回之前删除堆栈内存的选项

c - 我如何使用两个堆栈(LIFO)以便它可以像队列(FIFO)一样工作?

java - 瓦丁 8 : Binded CheckBoxGroup SelectionListener not fired on deselection