Class StreamCollector

All Implemented Interfaces:
JepComponent, PostfixMathCommandI, Serializable

public class StreamCollector extends UnaryFunction implements JepComponent
Collects the elements of a stream into a list using a provided Collector.

For example, to join a stream of objects into a string, you could define a function like this:

Collector<Object, StringBuilder, String> join =
   Collector.of(
       StringBuilder::new,
       StringBuilder::append,
       (left, right) -> { left.append(right.toString()); return left; },
       StringBuilder::toString);

jep.addFunction("toString",
    new ChainedUnaryFunction(
        new StreamCollector(join)));
See Also:
  • Constructor Details

    • StreamCollector

      public StreamCollector(Collector<Object,?,?> collector2)
  • Method Details

    • eval

      public Object eval(Object arg) throws EvaluationException
      Description copied from class: UnaryFunction
      Evaluate the function
      Specified by:
      eval in class UnaryFunction
      Parameters:
      arg - the single argument passed in
      Returns:
      the result of the function
      Throws:
      EvaluationException - on error
    • init

      public void init(Jep jep)
      Description copied from interface: JepComponent
      Initialize the component. This method is called whenever a component is added to Jep. Hence, it allows components to keep track of the other components they may rely on.
      Specified by:
      init in interface JepComponent
      Parameters:
      jep - the current Jep instance
    • getLightWeightInstance

      public JepComponent getLightWeightInstance()
      Description copied from interface: JepComponent
      Gets a light-weight instance suitable for using in multiple threads.
      Specified by:
      getLightWeightInstance in interface JepComponent
      Returns:
      either a new instance, null or 'this'.