RFR: 8025910 : (s) rename substream(long) -> skip and substream(long, long) -> slice

Paul Sandoz paul.sandoz at oracle.com
Wed Oct 9 12:45:17 UTC 2013


On Oct 9, 2013, at 5:38 AM, Mike Duigou <mike.duigou at oracle.com> wrote:

> Hello all;
> 
> Based upon feedback from the JavaOne Hands-On-Lab and other sources the 335 EG has decided to rename the two substream methods in the Streams interfaces to skip and slice.
> 
> Webrev:
> 
> http://cr.openjdk.java.net/~mduigou/JDK-8025910/0/webrev/
> 
> and the specdiff:
> 
> http://cr.openjdk.java.net/~mduigou/JDK-8025910/0/specdiff/overview-summary.html
> 
> Thanks, 
> 

Looks ok, but I have a preference to change the parameter name from "startInclusive" to say "n":

    /**
     * Returns a stream consisting of the remaining elements of this stream
     * after discarding the first {@code n} elements of the stream.
     * If this stream contains fewer than {@code n} elements then an
     * empty stream will be returned.
     *
     * <p>This is a <a href="package-summary.html#StreamOps">stateful
     * intermediate operation</a>.
     *
     * @apiNote
     * While {@code skip()} is generally a cheap operation on sequential
     * stream pipelines, it can be quite expensive on ordered parallel pipelines,
     * especially for large values of {@code n}, since {@code skip(n)}
     * is constrained to skip not just any <em>n</em> elements, but the
     * <em>first n</em> elements in the encounter order.  Using an unordered
     * stream source (such as {@link #generate(Supplier)}) or removing the
     * ordering constraint with {@link #unordered()} may result in significant
     * speedups of {@code skip()} in parallel pipelines, if the semantics of
     * your situation permit.  If consistency with encounter order is required,
     * and you are experiencing poor performance or memory utilization with
     * {@code skip()} in parallel pipelines, switching to sequential execution
     * with {@link #sequential()} may improve performance.
     *
     * @param n the number of leading elements to skip
     * @return the new stream
     * @throws IllegalArgumentException if {@code startInclusive} is negative
     */
    Stream<T> skip(long n);

Paul.


More information about the core-libs-dev mailing list