RFR 8132964 Spliterator documentation on Priority(Blocking)Queue

Martin Buchholz martinrb at google.com
Mon Nov 21 20:57:53 UTC 2016


Looks good to me!

On Mon, Nov 21, 2016 at 12:52 PM, Paul Sandoz <paul.sandoz at oracle.com>
wrote:

> Hi,
>
> Please review specification clarifications to PriorityQueue and
> PriorityBlockingQueue for the spliterator. Ordinarily i would not specify
> what spliterator characteristics are not reported, but in this case given
> what is said about iterator I think it reasonable to say it about
> spliterator (a number of developers have got caught out regarding order, or
> lack thereof in this case, but i also suspect they never read the
> specification!)
>
> Paul.
>
> diff -r eb147f1f232d src/java.base/share/classes/
> java/util/PriorityQueue.java
> --- a/src/java.base/share/classes/java/util/PriorityQueue.java  Mon Nov
> 21 12:00:46 2016 -0800
> +++ b/src/java.base/share/classes/java/util/PriorityQueue.java  Mon Nov
> 21 12:30:33 2016 -0800
> @@ -54,7 +54,8 @@
>   * <p>This class and its iterator implement all of the
>   * <em>optional</em> methods of the {@link Collection} and {@link
>   * Iterator} interfaces.  The Iterator provided in method {@link
> - * #iterator()} is <em>not</em> guaranteed to traverse the elements of
> + * #iterator()} and the Spliterator provided in method {@link
> #spliterator()}
> + * are <em>not</em> guaranteed to traverse the elements of
>   * the priority queue in any particular order. If you need ordered
>   * traversal, consider using {@code Arrays.sort(pq.toArray())}.
>   *
> @@ -799,7 +800,8 @@
>      /**
>       * Creates a <em><a href="Spliterator.html#
> binding">late-binding</a></em>
>       * and <em>fail-fast</em> {@link Spliterator} over the elements in
> this
> -     * queue.
> +     * queue. The spliterator does not traverse elements in any
> particular order
> +     * (the {@link Spliterator#ORDERED ORDERED} characteristic is not
> reported).
>       *
>       * <p>The {@code Spliterator} reports {@link Spliterator#SIZED},
>       * {@link Spliterator#SUBSIZED}, and {@link Spliterator#NONNULL}.
> diff -r eb147f1f232d src/java.base/share/classes/java/util/concurrent/
> PriorityBlockingQueue.java
> --- a/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java
>      Mon Nov 21 12:00:46 2016 -0800
> +++ b/src/java.base/share/classes/java/util/concurrent/PriorityBlockingQueue.java
>      Mon Nov 21 12:30:33 2016 -0800
> @@ -65,7 +65,8 @@
>   * <p>This class and its iterator implement all of the
>   * <em>optional</em> methods of the {@link Collection} and {@link
>   * Iterator} interfaces.  The Iterator provided in method {@link
> - * #iterator()} is <em>not</em> guaranteed to traverse the elements of
> + * #iterator()} and the Spliterator provided in method {@link
> #spliterator()}
> + * are is <em>not</em> guaranteed to traverse the elements of
>   * the PriorityBlockingQueue in any particular order. If you need
>   * ordered traversal, consider using
>   * {@code Arrays.sort(pq.toArray())}.  Also, method {@code drainTo}
> @@ -994,6 +995,8 @@
>
>      /**
>       * Returns a {@link Spliterator} over the elements in this queue.
> +     * The spliterator does not traverse elements in any particular order
> +     * (the {@link Spliterator#ORDERED ORDERED} characteristic is not
> reported).
>       *
>       * <p>The returned spliterator is
>       * <a href="package-summary.html#Weakly"><i>weakly
> consistent</i></a>.
>
>


More information about the core-libs-dev mailing list