# BaseStream

public interface **BaseStream** implements [AutoCloseable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/AutoCloseable.html)

|---|---|---|
| Known Indirect Subclasses [DoubleStream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/DoubleStream.html), [IntStream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/IntStream.html), [LongStream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/LongStream.html), [Stream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/Stream.html)\<T\> |---|---| | [DoubleStream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/DoubleStream.html) | A sequence of primitive double-valued elements supporting sequential and parallel aggregate operations. | | [IntStream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/IntStream.html) | A sequence of primitive int-valued elements supporting sequential and parallel aggregate operations. | | [LongStream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/LongStream.html) | A sequence of primitive long-valued elements supporting sequential and parallel aggregate operations. | | [Stream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/Stream.html)\<T\> | A sequence of elements supporting sequential and parallel aggregate operations. | |||

Base interface for streams, which are sequences of elements supporting
sequential and parallel aggregate operations. The following example
illustrates an aggregate operation using the stream types `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/Stream.html`
and `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/IntStream.html`, computing the sum of the weights of the red widgets:

    int sum = widgets.stream()
                          .filter(w -> w.getColor() == RED)
                          .mapToInt(w -> w.getWeight())
                          .sum();
     
See the class documentation for `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/Stream.html` and the package documentation for [java.util.stream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary) for additional specification of streams, stream operations, stream pipelines, and parallelism, which governs the behavior of all stream types.

<br />

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/Stream.html`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/IntStream.html`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/LongStream.html`
- `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/DoubleStream.html`
- [java.util.stream](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary)

### Public Method Summary

|---|---|
| abstract void | [close](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/BaseStream.html#close())() Closes this stream, causing all close handlers for this stream pipeline to be called. |
| abstract boolean | [isParallel](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/BaseStream.html#isParallel())() Returns whether this stream, if a terminal operation were to be executed, would execute in parallel. |
| abstract [Iterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Iterator.html)\<T\> | [iterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/BaseStream.html#iterator())() Returns an iterator for the elements of this stream. |
| abstract S | [onClose](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/BaseStream.html#onClose(java.lang.Runnable))([Runnable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Runnable.html) closeHandler) Returns an equivalent stream with an additional close handler. |
| abstract S | [parallel](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/BaseStream.html#parallel())() Returns an equivalent stream that is parallel. |
| abstract S | [sequential](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/BaseStream.html#sequential())() Returns an equivalent stream that is sequential. |
| abstract [Spliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html)\<T\> | [spliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/BaseStream.html#spliterator())() Returns a spliterator for the elements of this stream. |
| abstract S | [unordered](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/BaseStream.html#unordered())() Returns an equivalent stream that is [unordered](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary#Ordering). |

### Inherited Method Summary

From interface [java.lang.AutoCloseable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/AutoCloseable.html)

|---|---|
| abstract void | [close](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/AutoCloseable.html#close())() Closes this resource, relinquishing any underlying resources. |

## Public Methods

#### public abstract void
**close**
()

Closes this stream, causing all close handlers for this stream pipeline
to be called.

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/AutoCloseable.html#close()`

#### public abstract boolean
**isParallel**
()

Returns whether this stream, if a terminal operation were to be executed,
would execute in parallel. Calling this method after invoking an
terminal stream operation method may yield unpredictable results.

##### Returns

- `true` if this stream would execute in parallel if executed

#### public abstract [Iterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Iterator.html)\<T\>
**iterator**
()

Returns an iterator for the elements of this stream.

This is a [terminal
operation](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary#StreamOps).

##### Returns

- the element iterator for this stream

#### public abstract S
**onClose**
([Runnable](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Runnable.html) closeHandler)

Returns an equivalent stream with an additional close handler. Close
handlers are run when the `https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/BaseStream.html#close()` method
is called on the stream, and are executed in the order they were
added. All close handlers are run, even if earlier close handlers throw
exceptions. If any close handler throws an exception, the first
exception thrown will be relayed to the caller of `close()`, with
any remaining exceptions added to that exception as suppressed exceptions
(unless one of the remaining exceptions is the same exception as the
first exception, since an exception cannot suppress itself.) May
return itself.

This is an [intermediate
operation](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary#StreamOps).

##### Parameters

| closeHandler | A task to execute when the stream is closed |
|---|---|

##### Returns

- a stream with a handler that is run if the stream is closed

#### public abstract S
**parallel**
()

Returns an equivalent stream that is parallel. May return
itself, either because the stream was already parallel, or because
the underlying stream state was modified to be parallel.

This is an [intermediate
operation](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary#StreamOps).

##### Returns

- a parallel stream

#### public abstract S
**sequential**
()

Returns an equivalent stream that is sequential. May return
itself, either because the stream was already sequential, or because
the underlying stream state was modified to be sequential.

This is an [intermediate
operation](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary#StreamOps).

##### Returns

- a sequential stream

#### public abstract [Spliterator](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Spliterator.html)\<T\>
**spliterator**
()

Returns a spliterator for the elements of this stream.

This is a [terminal
operation](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary#StreamOps).

##### Returns

- the element spliterator for this stream

#### public abstract S
**unordered**
()

Returns an equivalent stream that is
[unordered](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary#Ordering). May return
itself, either because the stream was already unordered, or because
the underlying stream state was modified to be unordered.

This is an [intermediate
operation](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/stream/package-summary#StreamOps).

##### Returns

- an unordered stream