我知道Java搞砸堆栈实现 - 通过扩展Vector。默认情况下,Vector是同步的。阅读java doc,它说要创建一个堆栈,
Deque<Integer> stack = new ArrayDeque<Integer>();
因为我是java的新手。我的问题是:这是用Java定义堆栈的最佳实践吗?
答案 0 :(得分:1)
阅读Stack
的javadoc:
Deque
接口及其实现提供了一套更完整,更一致的LIFO堆栈操作,应该优先于此类使用 。例如:Deque<Integer> stack = new ArrayDeque<Integer>();
即使Deque
的javadoc说出来:
Deques也可以用作LIFO(后进先出)堆栈。 此接口应优先于旧版
Stack
类使用。
遵循java文档的建议是“最佳实践”吗?
呀。
答案 1 :(得分:0)
一般情况下(不是特定于语言),如果您想要动态堆栈实现,基于链接列表的实现提供了一个良好而高效的堆栈实现。如果您不想要动态实现,使用数组也是一个非常好的实现。在java Deque中给出了很好的表现。或者如果你想要和替代,你也可以试试这个使用内置Stack的例子:
static void showpush(Stack st, int a) {
st.push(new Integer(a));
//add appropriate print statements
}
static void showpop(Stack st) {
Integer a = (Integer) st.pop();
//add appropriate print statements
}
public static void main(String args[]) {
Stack st = new Stack();
showpush(st, 42);
showpush(st, 66);
showpush(st, 99);
showpop(st);
showpop(st);
showpop(st);
}