首页 > 解决方案 > 为什么在 ArrayDeque 和 Stack 中使用 push() 方法时输出不同?

问题描述

我是 Java 新手,学习收集主题。谁能告诉我为什么在 ArrayDeque 和 Stack 中使用 push 方法时输出会发生变化?

ArrayDeque 示例程序:

public class Simple4 {

public static void main(String[] args) {
    // TODO Auto-generated method stub

ArrayDeque q = new ArrayDeque();

q.push("e");
q.push("f");

System.out.println(q);
}
}

输出: [f,e]

堆栈示例程序:

public class Simple5 {

public static void main(String[] args) {
    // TODO Auto-generated method stub

Stack s = new Stack();
s.push("apple");
s.push("banana");


System.out.println(s);
}
}

输出: [苹果,香蕉]

标签: javastackqueue

解决方案


您的示例都是原始类型。不要使用原始类型。此外,您Stack正在使用 a 的默认输出格式Collection- 请注意元素以 FIFO 顺序(而不是 LIFO)出现。要正确使用Stack,请使用pop()。喜欢,

Stack<String> s = new Stack<>();
s.push("apple");
s.push("banana");
while (!s.isEmpty()) {
    System.out.println(s.pop());
}

哪些输出(在 LIFO 中)喜欢

banana
apple

推荐阅读