我不熟悉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]
答案 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.push
在Stack.push
类上定义。
Stack
实现了ArrayDeque.push
方法。但是Deque.push
并不是Stack
- 你只是将事情放在一边并把事情从一端拿掉,而一个序列允许你在两端放置和接受(&#34; De&# 34;意思是&#34;双重结束&#34;)。
由于它们是不相关类的无关方法,因此你不应该期望它们做同样的事情。当然,他们可能 - 您需要检查Javadoc以查看类的合同是什么 - 应该没有期望他们做。