RFR : 6799426 : (xs) Add constructor PriorityQueue(Comparator)

Doug Lea dl at cs.oswego.edu
Thu Jul 25 14:15:28 UTC 2013


On 07/24/13 19:30, Martin Buchholz wrote:
> PriorityQueue is unusual in that Doug maintains a copy in jsr166 CVS even though
> it is a non-thread-safe collection.  I think it makes sense,
> because PriorityQueue and PriorityBlockingQueue have parallel APIs and parallel
> implementations.  Many changes to one file require a matching change to the other.
>

The history is that we introduced java.util.concurrent.PriorityBlockingQueue,
for JDK1.5 which of course led to people wanting plain java.util.PriorityQueue,
which Josh started working on while at Sun. But for sake of JCP approval,
we pulled into jsr166 and have adopted ever since, because the two
classes share code. The capacity constructor was added in JDK1.6,
but I have no recollection why there is not one with comparator
but no capacity. It seems reasonable to add one.


> Regarding this particular change, if PriorityQueue gets a new constructor taking
> a Comparator, then PriorityBlockingQueue probably should too

Yes.

*** PriorityBlockingQueue.java.~1.99.~	Wed Jul 24 11:23:05 2013
--- PriorityBlockingQueue.java	Thu Jul 25 10:13:47 2013
***************
*** 200,205 ****
--- 200,219 ----
       }

       /**
+      * Creates a {@code PriorityBlockingQueue} with the default
+      * initial capacity that orders its elements according to the
+      * specified comparator.
+      *
+      * @param  comparator the comparator that will be used to order this
+      *         priority queue.  If {@code null}, the {@linkplain Comparable
+      *         natural ordering} of the elements will be used.
+      * @since 1.8
+      */
+     public PriorityBlockingQueue(Comparator<? super E> comparator) {
+         this(DEFAULT_INITIAL_CAPACITY, comparator);
+     }
+
+     /**
        * Creates a {@code PriorityBlockingQueue} containing the elements
        * in the specified collection.  If the specified collection is a
        * {@link SortedSet} or a {@link PriorityQueue}, this





More information about the core-libs-dev mailing list