本文主要是介绍关于Java PriorityQueue,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. 优先队列当中,迭代器的访问顺序是按照添加的顺序,而不是按照优先级来排列的。
2. 关于offer方法和add方法的区别, 由借口QUEUE<E>中的offer方法指定,即: 将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。 而由于PriorityQueue是一个无界的队列,因此我觉得在优先队列中二者区别不大。例子:
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Iterator;
import java.util.PriorityQueue;
public class PriorityQueueTest {public static void main(String args[]){PriorityQueue<GregorianCalendar> pqueue = new PriorityQueue<GregorianCalendar>();pqueue.add(new GregorianCalendar(1982, Calendar.DECEMBER,30));pqueue.add(new GregorianCalendar(1980,Calendar.JANUARY,15));pqueue.add(new GregorianCalendar(1966,Calendar.JANUARY,20));pqueue.add(new GregorianCalendar(2014,Calendar.JULY,06));pqueue.add(new GregorianCalendar(1983,Calendar.JANUARY,06));for(GregorianCalendar c: pqueue)System.out.println(c.getTime());System.out.println(pqueue.peek().get(Calendar.YEAR));Iterator<GregorianCalendar> iter = pqueue.iterator();while(iter.hasNext())System.out.println(iter.next().get(Calendar.YEAR));// 要访问队列中的元素最好使用toArray()方法。System.out.println(pqueue.size());int max = pqueue.size();for (int i =0; i< max;i++)System.out.println(pqueue.poll().get(Calendar.YEAR));}
}
这篇关于关于Java PriorityQueue的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!