# 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