如何在Java中定义堆栈

时间:2016-03-06 01:57:18

标签: java

我知道Java搞砸堆栈实现 - 通过扩展Vector。默认情况下,Vector是同步的。阅读java doc,它说要创建一个堆栈,

 Deque<Integer> stack = new ArrayDeque<Integer>();

因为我是java的新手。我的问题是:这是用Java定义堆栈的最佳实践吗?

2 个答案:

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