打印优先级队列的内容[java]

时间:2014-04-08 05:28:52

标签: java queue priority-queue

如何让print_queue在java中正常工作?这是我自己的队列实现。

使用Iterator()可以正常工作,除非它以随机顺序打印数字。

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() ;
    }

}

我尝试使用toArray()但它返回Object [],我不知道如何遍历:

Object[] queue_object_array = x.toArray() ;
Arrays.sort(queue_object_array) ;

4 个答案:

答案 0 :(得分:7)

  

使用Iterator()可以正常工作,除了它以随机顺序打印数字。

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

答案 1 :(得分:1)

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

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

如果是一维数组:

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

答案 2 :(得分:0)

单行解决方案:在需要快速调试时很有用。

// Create the session storage object to store cookies.
const store = new CloudantStore({
    url: CLOUDANT_DB_URL,
    database: DB_NAME
});

// Inform us that the session is connected to the cloudant database.
store.on('connect', () => console.log('Session connected'));
// Inform us that the session disconnected from the cloudant database.
store.on('disconnect', () => console.log('Session disconnected.'));
// Inform us that the session failed to connect to the cloudant database.
store.on('error', (err) => console.log(err.msg));

答案 3 :(得分:-2)

您可以将Priority Queue对象转换为数组对象。 然后,您可以打印此数组对象。

Object[] arr = priorityQueue.toArray();