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

# 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.Greedy<A,T,R>`

Enclosing interface:
  `Gatherer<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>
An Integrator receives elements and processes them, optionally using the supplied state, and optionally sends incremental results downstream.

Since:
  24

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static interface`
  `Gatherer.Integrator.Greedy<A,T,R>`
  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.Downstream<? 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.Integrator<A,T,R>`
  `of(Gatherer.Integrator<A,T,R> integrator)`
  Factory method for turning Integrator-shaped lambdas into Integrators.
  `static <A,T,R> Gatherer.Integrator.Greedy<A,T,R>`
  `ofGreedy(Gatherer.Integrator.Greedy<A,T,R> greedy)`
  Factory method for turning Integrator-shaped lambdas into `Gatherer.Integrator.Greedy` Integrators.

- ## Method Details

  - ### integrate

    boolean integrate(A state, T element, Gatherer.Downstream<? 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.Integrator<A,T,R> of(Gatherer.Integrator<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.Greedy<A,T,R> ofGreedy(Gatherer.Integrator.Greedy<A,T,R> greedy)
    Factory method for turning Integrator-shaped lambdas into `Gatherer.Integrator.Greedy` 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