Gatherer.Integrator (Java SE 22 & JDK 22)
Description: declaration: module: java.base, package: java.util.stream, interface: Gatherer, interface: Integrator
Keywords: java.util.stream.Gatherer.Integrator interface

Module java.base
Package java.util.stream

# Interface Gatherer.Integrator<A,T,R>

Type Parameters:
  `A` - the type of state used by this integrator
  `T` - the type of elements this integrator consumes
  `R` - the type of results this integrator can produce

All Known Subinterfaces:
  `Gatherer.Integrator.GreedyPREVIEW<A,T,R>`

Enclosing interface:
  `GathererPREVIEW<T,A,R>`

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public static interface Gatherer.Integrator<A,T,R>
`Integrator` is a preview API of the Java platform.
Programs can only use `Integrator` when preview features are enabled.
Preview features may be removed in a future release, or upgraded to permanent features of the Java platform.
An Integrator receives elements and processes them, optionally using the supplied state, and optionally sends incremental results downstream.

Since:
  22

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static interface`
  `Gatherer.Integrator.GreedyPREVIEW<A,T,R>`
  Preview.
  Greedy Integrators consume all their input, and may only relay that the downstream does not want more elements.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `integrate(A state, T element, Gatherer.DownstreamPREVIEW<? super R> downstream)`
  Performs an action given: the current state, the next element, and a downstream object; potentially inspecting and/or updating the state, optionally sending any number of elements downstream -- and then returns whether more elements are to be consumed or not.
  `static <A, T, R> Gatherer.IntegratorPREVIEW<A,T,R>`
  `of(Gatherer.IntegratorPREVIEW<A,T,R> integrator)`
  Factory method for turning Integrator-shaped lambdas into Integrators.
  `static <A, T, R> Gatherer.Integrator.GreedyPREVIEW<A,T,R>`
  `ofGreedy(Gatherer.Integrator.GreedyPREVIEW<A,T,R> greedy)`
  Factory method for turning Integrator-shaped lambdas into `Gatherer.Integrator.Greedy`PREVIEW Integrators.

- ## Method Details

  - ### integrate

    boolean integrate(A state, T element, Gatherer.DownstreamPREVIEW<? super R> downstream)
    Performs an action given: the current state, the next element, and a downstream object; potentially inspecting and/or updating the state, optionally sending any number of elements downstream -- and then returns whether more elements are to be consumed or not.
    Parameters:
      `state` - The state to integrate into
      `element` - The element to integrate
      `downstream` - The downstream object of this integration
    Returns:
      `true` if subsequent integration is desired, `false` if not

  - ### of

    static <A, T, R> Gatherer.IntegratorPREVIEW<A,T,R> of(Gatherer.IntegratorPREVIEW<A,T,R> integrator)
    Factory method for turning Integrator-shaped lambdas into Integrators.
    Type Parameters:
      `A` - the type of state used by this integrator
      `T` - the type of elements this integrator receives
      `R` - the type of results this integrator can produce
    Parameters:
      `integrator` - a lambda to create as Integrator
    Returns:
      the given lambda as an Integrator

  - ### ofGreedy

    static <A, T, R> Gatherer.Integrator.GreedyPREVIEW<A,T,R> ofGreedy(Gatherer.Integrator.GreedyPREVIEW<A,T,R> greedy)
    Factory method for turning Integrator-shaped lambdas into `Gatherer.Integrator.Greedy`PREVIEW Integrators.
    Type Parameters:
      `A` - the type of state used by this integrator
      `T` - the type of elements this integrator receives
      `R` - the type of results this integrator can produce
    Parameters:
      `greedy` - a lambda to create as Integrator.Greedy
    Returns:
      the given lambda as a Greedy Integrator