docs / stdlib / lang / stream

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

aot

  1. Components
  2. Scope
  3. Scoped

codec

  1. Base32
  2. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. Fiber
  5. FiberLocal
  6. Lock
  7. Mutex
  8. RwLock
  9. Semaphore
  10. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. NotProvidedException
  4. RecoverableException
  5. ScopedBuildFailedException
  6. ScopeNotActiveException
  7. Throwable
  8. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. DefaultHasher
  2. Hash
  3. SipHash
  4. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. BufferPool
  2. ByteBuffer
  3. IpAddress
  4. Server
  5. ServerBuilder
  6. SocketAddress
  7. TcpListener
  8. TcpStream
  9. UdpSocket

io / net / dns

  1. Dns

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. CompressStream
  3. DecompressionLimitException
  4. Decompressor
  5. Encoder
  6. Schema
  7. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream
  4. KernelTimer

xpu / mesh

  1. MeshSimplifier

Stream<T>

cajeta.lang.stream.Stream — the pull-protocol base for everything iteration-related in the stdlib. Implementers override next() to yield elements; the combinator methods on Stream itself consume next() and inherit to every subclass. A stream comes from a splittable root such as ArrayStream (or an array’s .stream()); chain lazy intermediates (filter, map, take, …) and finish with an eager terminal (count, reduce, collect, …). .parallel() marks the stream parallel-eligible; terminals consult the flag to decide whether to fork, merging per-worker partials through a combiner.

int32[] xs = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
int32 evens = xs.stream()
    .filter((x) -> x % 2 == 0)
    .count();                                // 5
int32 squares = xs.stream()
    .map<int32>((x) -> x * x)
    .reduce(0, (a, b) -> a + b);             // 385
int64 sum = xs.stream()
    .fold<int64>(0L, (acc, e) -> acc + e);   // 55

Methods

Signature
Optional<T> next() ⚑Pull the next element; implementers override, the default returns an empty Optional
Stream<T> parallel()Mark this stream as parallel-eligible
Stream<T> sequential()Clear the parallel-eligibility flag
int32 count()Count elements by walking next() to exhaustion
void forEach((T) -> void fn)Apply fn to every remaining element
boolean anyMatch((T) -> boolean pred)True if any remaining element matches pred
boolean allMatch((T) -> boolean pred)True iff every remaining element matches pred
boolean noneMatch((T) -> boolean pred)True iff no remaining element matches pred
Optional<T> findFirst((T) -> boolean pred)First matching element, or an empty Optional, returned by value
T reduce(T seed, (T, T) -> #T fn)Left-fold with an explicit seed
final R fold<R>(R seed, (R, T) -> #R fn)Cross-type left-fold
final R fold<R>(R seed, (R, T) -> #R fn, (R, R) -> #R combiner)Cross-type left-fold with explicit combiner for the parallel path
final #R collect<R>(Collector<T, R> c)Reduce via a Collector’s (supplier, accumulator, combiner) triple. Owned, so bind it with #=
#Stream<T> filter((T) -> boolean pred)Lazy intermediate: keep only elements matching pred
#Stream<T> take(int32 n)Stateful intermediate: cap the stream at the first n elements
#Stream<T> skip(int32 n)Stateful intermediate: drop the first n elements
#Stream<T> peek((T) -> void fn)Lazy intermediate: invoke fn for its side effect and pass the element through
final #Stream<R> map<R>((T) -> #R fn)Lazy intermediate: apply fn to each element, yielding Stream<R>
final #Stream<R> flatMap<R>((T) -> #Stream<R> fn)Map each element to a stream and drain each inner stream in turn
final #Stream<R> mapOrSkip<R>((T) -> #R fn)Like map, but elements whose fn throws RecoverableException are dropped
final #Stream<R> mapOrFallback<R>((T) -> #R fn, R fallback)Like map, but a RecoverableException substitutes fallback
final #Stream<R> mapOrLog<R>((T) -> #R fn, (T, Exception) -> void logger)Like map, but a failing element is passed to logger and dropped
Stream<?> unwrap()Wrapper-chain unwind protocol (parallel infrastructure)
boolean isStatefulWrapper()Stateful intermediate marker (parallel infrastructure)
#Stream<T> cloneChainOver(#Stream<?> newRoot)Recursive chain re-wrap (parallel infrastructure)
int64 splittableSize()Splittable-shape bridge (parallel infrastructure)
#Stream<?> trySplitRoot()Wildcard-typed split entry (parallel infrastructure)

⚑ = @EntryPoint

See also

Source: docs/stdlib/lang/stream/Stream.md · 2 min read · 544 words