Java 堆栈不遵循 LIFO

标签 java data-structures functional-programming stack

为什么我的 java 堆栈在打印时不遵循 LIFO 原则?

import java.util.*;

class StackTrace
{
    public static void main(String []ar)
    {

    Stack myStack = new Stack();
    myStack.push(1);
    myStack.push(2);
    myStack.push(3);
    myStack.push(4);

    System.out.println(myStack);

    Object Arr[]=myStack.toArray();
    for(Object a:Arr)
        System.out.println(a); 
    }
}

输出:

[1, 2, 3, 4]


1
2
3
4

在上面的代码中,语句System.out.println(myStack);是按顺序打印数据,而不是后进先出的方式。

为什么会这样?

上面的程序中的 toArray() 方法是如何工作的?

最佳答案

toArray 方法将按照元素插入堆栈的顺序返回元素数组。 如果您需要 LIFO 中的元素,请使用 pop 方法。 您可以在此处查看 Stack api,

http://docs.oracle.com/javase/6/docs/api/java/util/Stack.html

关于Java 堆栈不遵循 LIFO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26819240/

相关文章:

java - wait() 没有捕获 notification();导致奇怪的死锁行为

math - 链式哈希表查找的预期最坏情况时间复杂度?

haskell - 了解副作用 : Is allocating memory a pure operation?

javascript - JS Monad 单元函数

java - 如何在 Apache wicket 中使用从 BasePage 继承的 AdminBasePage(从 WebPage 继承)

java - 将文本文件 cat 放入标准输入中,导致数组中为空?

algorithm - 给定数组的多少排列导致 BST 的高度为 2?

function - 如何计算 Racket 中两个合约的盈亏平衡点

java - 最有效的分割句子的方法

data-structures - 一个单词有多少位,并且在不同的体系结构中是恒定的吗?