net.sf.jga.fn.algorithm

Class Accumulate<T>

public class Accumulate<T> extends AbstractUnaryFunctor<Iterator<? extends T>,T> implements Serializable

Applies a BinaryFunctor to each element in an iteration, and returns the final result. Each member of the collection is passed to the functor along with the previous result. If the two arg constructor is used, then the given value is used on the first invocation of the functor: otherwise the first element of the iteration is consumed and passed as the starting value.

If the iteration was empty, then the result of this function is the starting value or null if no starting value was given.

If no starting value was given, and the iteration has exactly one element, then the element is returned without the BinaryFunctor being used.

Copyright © 2003 David A. Hall

Author: David A. Hall

Nested Class Summary
interfaceAccumulate.Visitor
Interface for classes that may interpret an Accumulate functor.
Constructor Summary
Accumulate(BinaryFunctor<T,T,T> fn)
Builds an Accumulate functor that will use the given functor to process elements in an iteration.
Accumulate(T startValue, BinaryFunctor<T,T,T> fn)
Builds an Accumulate functor that will use the given start value and functor to process elements in an iteration.
Method Summary
voidaccept(Visitor v)
Calls the Visitor's visit(Accumulate) method, if it implements the nested Visitor interface.
Tfn(Iterator<? extends T> iterator)
Apply the functor to the elements of the iteration and return the final result.
BinaryFunctor<T,T,T>getFunction()
Returns the functor used to process elements in the iteration.
TgetStartValue()
Returns the start value, or null if no start value was given.
booleanhasStartValue()
Returns true if a start value was passed at construction.
StringtoString()

Constructor Detail

Accumulate

public Accumulate(BinaryFunctor<T,T,T> fn)
Builds an Accumulate functor that will use the given functor to process elements in an iteration. The first element in the iteration will be used as the start value.

Accumulate

public Accumulate(T startValue, BinaryFunctor<T,T,T> fn)
Builds an Accumulate functor that will use the given start value and functor to process elements in an iteration. The first element in the iteration will be used as the start value.

Method Detail

accept

public void accept(Visitor v)
Calls the Visitor's visit(Accumulate) method, if it implements the nested Visitor interface.

fn

public T fn(Iterator<? extends T> iterator)
Apply the functor to the elements of the iteration and return the final result.

getFunction

public BinaryFunctor<T,T,T> getFunction()
Returns the functor used to process elements in the iteration.

getStartValue

public T getStartValue()
Returns the start value, or null if no start value was given.

hasStartValue

public boolean hasStartValue()
Returns true if a start value was passed at construction.

toString

public String toString()