当前位置: 首页 > 知识库问答 >
问题:

如何在Java中定义堆栈[重复]

刘嘉木
2023-03-14

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

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

因为我对java比较陌生。我的问题是:这是在Java中定义堆栈的最佳实践吗?

共有2个答案

夏青青
2023-03-14

一般来说(不是特定于语言的),如果你想要动态堆栈实现,基于链表的实现提供了一个良好而高效的堆栈实现。如果你不想要动态实现,使用数组也是一个很好的实现。在java中,Deque给出了一个伟大的表现。或者,如果您愿意和替代,您也可以尝试使用内置堆栈的示例:

    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);
   }
范承教
2023-03-14

读取< code >堆栈的javadoc:

Deque接口及其实现提供了一组更完整和一致的后进先出堆栈操作,应该优先使用该类。例如:

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

甚至 Deque 的 javadoc 也这样说:

Deques也可以用作LIFO(后进先出)堆栈。应优先使用此接口而不是旧版 Stack 类。

遵循java文档的建议是“最佳实践”吗
是的。

 类似资料:
  • 我需要检查堆栈中是否有重复项(仅在基本方法pop、push、top、isempty中使用),如果堆栈没有重复项,则返回true;如果堆栈为空,则返回true;如果堆栈有重复项,则返回false 如果不使用另一个函数和最短路径,我如何做到这一点?解决方案需要使用基本方法,而不使用c的内置函数#

  • 问题内容: 我正在运行一个用Java在Eclipse中编写的程序。对于很大的输入,该程序具有很深的递归级别。对于较小的输入,程序运行正常,但是在给出较大的输入时,出现以下错误: 可以通过增加Java堆栈大小来解决此问题,如果可以,那么如何在Eclipse中做到这一点? 更新: @乔恩·斯基特 该代码递归地遍历解析树以建立数据结构。因此,例如,代码将使用解析树中的一个节点来做一些工作,并在该节点的两

  • 如果做不到这一点,如何让jfreechart显示矩阵图表呢?jfreechart中是否内置了一些东西,或者必须制作一堆图表面板并将它们添加到面板中? 谢谢

  • 问题内容: 嗨,我正在尝试使用另一个空堆栈反转堆栈(我自己编写了一个堆栈)。由于某种原因,它无法正常工作。谁能帮我这个 ? 问题答案: while(!stack1.isEmpty()){ Integer value = (Integer)stack1.pop(); System.out.println(value); reverse.push(value); }

  • 问题内容: 我有一个堆栈A,我想创建一个与堆栈A相同的堆栈B。​​我不希望堆栈B只是指向A的指针- 我实际上是想创建一个包含相同元素的新堆栈B堆栈A的顺序与堆栈A相同。堆栈A是字符串的堆栈。 谢谢! 问题答案: 只需使用Stack类的clone()方法(它实现Cloneable)。 这是一个使用JUnit的简单测试用例: 编辑: tmsimont:这会为我创建“未经检查或不安全的操作”警告。有什么

  • 我已经有一个stack类在工作,但是现在我每次只能弹出一个元素,我希望能够同时弹出多个元素。无需多次使用推送和弹出。我试图创建两个函数来实现这一点。函数pushAll和popN。比如: 备注:输入参数all是一个数组,包含所有必须输入的元素。向量的最后一个元素必须在叠加后位于顶部。如果没有空间插入所有元素,则必须不插入任何元素,并且必须引发StackFullException异常。popN方法弹出