java.util

## Class Spliterators.AbstractLongSpliterator

- java.lang.Object
- - java.util.Spliterators.AbstractLongSpliterator

- All Implemented Interfaces:
    Spliterator<Long>, Spliterator.OfLong, Spliterator.OfPrimitive<Long,LongConsumer,Spliterator.OfLong>
  Enclosing class:
    Spliterators

      public abstract static class Spliterators.AbstractLongSpliterator
      extends Object
      implements Spliterator.OfLong

  An abstract `Spliterator.OfLong` that implements `trySplit` to permit limited parallelism.

  To implement a spliterator an extending class need only implement `Spliterator.OfLong.tryAdvance(java.util.function.LongConsumer)` tryAdvance}. The extending class should override `Spliterator.OfLong.forEachRemaining(java.util.function.LongConsumer)` forEach} if it can provide a more performant implementation.

  Since:
    1.8
  See Also:
    `Spliterators.spliterator(java.util.PrimitiveIterator.OfLong, long, int)`

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface java.util.Spliterator

      `Spliterator.OfDouble, Spliterator.OfInt, Spliterator.OfLong, Spliterator.OfPrimitive<T,T_CONS,T_SPLITR extends Spliterator.OfPrimitive<T,T_CONS,T_SPLITR>>`

  - ### Field Summary

    - ### Fields inherited from interface java.util.Spliterator

      `CONCURRENT, DISTINCT, IMMUTABLE, NONNULL, ORDERED, SIZED, SORTED, SUBSIZED`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractLongSpliterator(long est, int additionalCharacteristics)` Creates a spliterator reporting the given estimated size and characteristics.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `characteristics()` Returns a set of characteristics of this Spliterator and its elements.
    `long` | `estimateSize()` Returns an estimate of the number of elements that would be encountered by a `Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)` traversal, or returns `Long.MAX_VALUE` if infinite, unknown, or too expensive to compute.
    `Spliterator.OfLong` | `trySplit()` If this spliterator can be partitioned, returns a Spliterator covering elements, that will, upon return from this method, not be covered by this Spliterator.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.util.Spliterator.OfLong

      `forEachRemaining, forEachRemaining, tryAdvance, tryAdvance`

    - ### Methods inherited from interface java.util.Spliterator

      `getComparator, getExactSizeIfKnown, hasCharacteristics`

- - ### Constructor Detail

    - #### AbstractLongSpliterator

          protected AbstractLongSpliterator(long est,
                                            int additionalCharacteristics)

      Creates a spliterator reporting the given estimated size and characteristics.
      Parameters:
        `est` - the estimated size of this spliterator if known, otherwise `Long.MAX_VALUE`.
        `additionalCharacteristics` - properties of this spliterator's source or elements. If `SIZED` is reported then this spliterator will additionally report `SUBSIZED`.

  - ### Method Detail

    - #### trySplit

          public Spliterator.OfLong trySplit()

      If this spliterator can be partitioned, returns a Spliterator covering elements, that will, upon return from this method, not be covered by this Spliterator.

      If this Spliterator is `Spliterator.ORDERED`, the returned Spliterator must cover a strict prefix of the elements.

      Unless this Spliterator covers an infinite number of elements, repeated calls to `trySplit()` must eventually return `null`. Upon non-null return:

      - the value reported for `estimateSize()` before splitting, must, after splitting, be greater than or equal to `estimateSize()` for this and the returned Spliterator; and
      - if this Spliterator is `SUBSIZED`, then `estimateSize()` for this spliterator before splitting must be equal to the sum of `estimateSize()` for this and the returned Spliterator after splitting.

      This method may return `null` for any reason, including emptiness, inability to split after traversal has commenced, data structure constraints, and efficiency considerations. This implementation permits limited parallelism.

      Specified by:
        `trySplit` in interface `Spliterator<Long>`
      Specified by:
        `trySplit` in interface `Spliterator.OfLong`
      Specified by:
        `trySplit` in interface `Spliterator.OfPrimitive<Long,LongConsumer,Spliterator.OfLong>`
      Returns:
        a `Spliterator` covering some portion of the elements, or `null` if this spliterator cannot be split

    - #### estimateSize

          public long estimateSize()

      Returns an estimate of the number of elements that would be encountered by a `Spliterator.forEachRemaining(java.util.function.Consumer<? super T>)` traversal, or returns `Long.MAX_VALUE` if infinite, unknown, or too expensive to compute.

      If this Spliterator is `Spliterator.SIZED` and has not yet been partially traversed or split, or this Spliterator is `Spliterator.SUBSIZED` and has not yet been partially traversed, this estimate must be an accurate count of elements that would be encountered by a complete traversal. Otherwise, this estimate may be arbitrarily inaccurate, but must decrease as specified across invocations of `Spliterator.trySplit()`.

      Specified by:
        `estimateSize` in interface `Spliterator<Long>`
      Returns:
        the estimated size, or `Long.MAX_VALUE` if infinite, unknown, or too expensive to compute.

    - #### characteristics

          public int characteristics()

      Returns a set of characteristics of this Spliterator and its elements. The result is represented as ORed values from `Spliterator.ORDERED`, `Spliterator.DISTINCT`, `Spliterator.SORTED`, `Spliterator.SIZED`, `Spliterator.NONNULL`, `Spliterator.IMMUTABLE`, `Spliterator.CONCURRENT`, `Spliterator.SUBSIZED`. Repeated calls to `characteristics()` on a given spliterator, prior to or in-between calls to `trySplit`, should always return the same result.

      If a Spliterator reports an inconsistent set of characteristics (either those returned from a single invocation or across multiple invocations), no guarantees can be made about any computation using this Spliterator.

      Specified by:
        `characteristics` in interface `Spliterator<Long>`
      Returns:
        a representation of characteristics

Copyright © 2025 API Design. All Rights Reserved.