如何让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) ;
答案 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();