如何在java中打印堆栈

时间:2014-11-05 02:54:14

标签: java stack queue

我写了一个方法,接收一个Queue作为参数,然后将这个队列转换成一个堆栈,现在我想尝试在main中打印这个方法,看看它是否有效,但堆栈没有toString方法。我已经做了一些研究,并尝试将堆栈转换为数组,但我无法让它工作。 Java, Printing the stack values

有人可以给我一些关于如何做到这一点的提示吗?

public static void QueueStack(Queue<Integer> q){
    Stack<Integer> stack1 = new Stack<Integer>();
    while(!q.isEmpty()){
        int temp = q.dequeue();
        stack1.push(temp);      
    }
    Arrays.toString(stack1.toArray());
}

5 个答案:

答案 0 :(得分:1)

您是否尝试过使用Stack类的toString()方法?

e.g。

stack1.toString();

或者您想要打印出特定格式吗?

答案 1 :(得分:0)

您可以尝试VectorStack类的get(int index)方法,假设您不想在打印时弹出堆栈中的元素。

答案 2 :(得分:0)

您也可以将其与初始化方式非常相似。

while(!stack1.isEmpty())
    {  
       int t= stack1.pop();
       System.out.println(t);
    }

答案 3 :(得分:0)

if (!tack1.isEmpty()) {
    for(Object a : stack1) {
        System.out.println(a);
    }
}

答案 4 :(得分:0)

这里是一种将给定队列转换为堆栈的方法:

public static void QueueStack(Queue<Integer> queue){

    Stack<Integer> stack = new Stack<>();
    for(Integer in: queue){
        stack.push(in);
    }
    //Here, the output would be same as you inserted elements.As stack uses iterator which prints elements as they are inserted(a bug in stack iteration)
    System.out.println("Stack: "+stack);
    
    //You can use java 8 for-each style as well.
    stack.forEach(System.out::println);
    
    //If you want to traverse stack in LIFO manner..
    while(stack.isEmpty){
    System.ou.println(stack.pop());
    }
    
    //For better performance ArrayDeque<>() is preferred!
    Deque<Integer> stack = new ArrayDeque<Integer>();
    
}