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