Java 打印优先级队列的内容

Java 打印优先级队列的内容,java,queue,priority-queue,Java,Queue,Priority Queue,如何使打印队列在Java中正常工作?这是我自己的队列实现 使用迭代器()可以很好地工作,只是它可以按随机顺序打印数字。 package data_structures_java ; import java.util.Iterator; import java.util.PriorityQueue ; import java.util.* ; public class Queue_implementation { PriorityQueue<Integer> actual_

如何使打印队列在Java中正常工作?这是我自己的队列实现

使用
迭代器()
可以很好地工作,只是它可以按随机顺序打印数字。

package data_structures_java ;
import java.util.Iterator;
import java.util.PriorityQueue ;
import java.util.* ;
public class Queue_implementation {
 
    PriorityQueue<Integer> actual_queue ;
    
    public Queue_implementation(){
        actual_queue = new PriorityQueue<Integer>() ;
        
    }
    
    public  void add(int num){
        actual_queue.add(num) ;
    }
    
    public int remove(){
          return actual_queue.remove() ;          
    }
    
    public int peek(){
        if( actual_queue.isEmpty()) return -1 ;
        else return actual_queue.peek() ;
    }
    
    public int element(){
        return actual_queue.element() ;
    }
    
    public void print_queue(){      
        PriorityQueue<Integer>copy = new PriorityQueue<Integer>();
        copy.addAll(actual_queue) ;        
        Iterator<Integer> through = actual_queue.iterator() ;
        while(through.hasNext() ) {
                System.out.print(through.next() + " ") ;
        }
        System.out.println() ;
                
        actual_queue.addAll(copy) ;
        
    }
    public static void main(String[] args) {            
        Queue_implementation x = new Queue_implementation() ;
        x.add(10) ;
        x.add(9) ;
        x.add(8) ;
        x.add(7) ;
        x.add(6) ;
        x.print_queue() ;
    }

}
使用迭代器()可以很好地工作,只是它可以按随机顺序打印数字


这正是它在Javadoc中所说的。在
PriorityQueue
中获得排序的唯一方法是使用
poll()
remove()
方法。

单行解决方案:当需要快速调试时,它很有用

System.out.println(Arrays.toString(priorityQueue.toArray()));
编辑:另一个简明代码:

System.out.println(priorityQueue);

如果需要打印priorityQueue的内容,其中每个元素都是二维数组,则可以尝试使用:

System.out.println(Arrays.deepToString(priorityQueue.toArray());
如果是一维阵列:

System.out.println(Arrays.toString(priorityQueue.toArray());

您的队列应该是队列还是优先队列?它们有两种不同的功能。@WillNewton,实际上只是队列,但我使用java apiyes中的std.priority队列。我不明白他这样做的原因-我,topic starter给你+1ejp,但当我使用remove()-我从队列本身删除元素,我是否需要以某种方式存储它并在remove()后复制回来?@ERJAN是的,如果您以后需要这些内容。代码与
System.out.println(priorityQueue)
@ZhaoGang有什么区别?谢谢您的注释。其实我查过之后还是一样的。这仅仅是因为我的思考过程导致我这样做:D你可以添加一个新答案,或者我将编辑我的答案。它们基本相同,因此不需要新答案。我想,如果你愿意,请编辑你的答案,thx。这两个答案都不会按优先顺序打印PQ。显然您还没有尝试过。@user207421我不说这个方法会按顺序打印。这对调试很有用。我懒得检查,但我记得原来的帖子只是想打印出来的内容。
System.out.println(Arrays.toString(priorityQueue.toArray());