为什么在ArrayDeque和Stack中使用push()方法时输出不同?

时间:2018-05-27 16:53:31

标签: java stack queue

我不熟悉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]

Stack Sample program:

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);
}
}

输出: [apple,banana]

2 个答案:

答案 0 :(得分:2)

您的示例 原始类型。不要使用原始类型。此外,您的Stack正在使用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

答案 1 :(得分:0)

不要误以为df['mean'] = df.iloc[:,1:].mean(numeric_only =True)Stack.push有任何关联。尽管名称和参数相同,但它们彼此无关。

ArrayDeque.pushStack.push类上定义。

Stack实现了ArrayDeque.push方法。但是Deque.push并不是Stack - 你只是将事情放在一边并把事情从一端拿掉,而一个序列允许你在两端放置和接受(&#34; De&# 34;意思是&#34;双重结束&#34;)。

由于它们是不相关类的无关方法,因此你不应该期望它们做同样的事情。当然,他们可能 - 您需要检查Javadoc以查看类的合同是什么 - 应该没有期望他们