Interface ProjectionAccumulator<E,​V,​A,​R>

  • Type Parameters:
    E - The type of extracted values to accumulate before being transformed.
    V - The type of values to accumulate obtained by transforming extracted values (E).
    A - The type of the temporary storage for accumulated values, before and after being transformed.
    R - The type of the final result containing values of type V.

    public interface ProjectionAccumulator<E,​V,​A,​R>
    A variation on Collector suitable for projections on field values.

    Compared to Collector:

    • Method Detail

      • createInitial

        A createInitial()
        Creates the initial accumulated container.

        This operation should be non-blocking.

        Returns:
        The initial accumulated container, to pass to the first call to accumulate(Object, Object).
      • accumulate

        A accumulate​(A accumulated,
                     E value)
        Folds a new value in the given accumulated container.

        This operation should be non-blocking.

        Parameters:
        accumulated - The accumulated value so far. For the first call, this is a value returned by createInitial(). For the next calls, this is the value returned by the previous call to accumulate(Object, Object).
        value - The value to accumulate.
        Returns:
        The new accumulated value.
      • accumulateAll

        default A accumulateAll​(A accumulated,
                                Collection<E> values)
        Folds a collection of new values in the given accumulated container.

        This operation should be non-blocking.

        Parameters:
        accumulated - The accumulated value so far. For the first call, this is a value returned by createInitial(). For the next calls, this is the value returned by the previous call to accumulate(Object, Object).
        values - The values to accumulate.
        Returns:
        The new accumulated value.
      • size

        int size​(A accumulated)
        Parameters:
        accumulated - The accumulated value so far, returned by the last call to accumulate(Object, Object).
        Returns:
        The number of elements in the accumulated value.
      • get

        E get​(A accumulated,
              int index)
        Retrieves the value at the given index.

        This operation should be non-blocking.

        Parameters:
        accumulated - The accumulated value so far, returned by the last call to accumulate(Object, Object).
        index - The index of the value to retrieve.
        Returns:
        The value at the given index.
      • transform

        A transform​(A accumulated,
                    int index,
                    V transformed)
        Transforms the value at the given index, replacing it with the given transformed value.

        This operation should be non-blocking.

        Parameters:
        accumulated - The accumulated value so far, returned by the last call to accumulate(Object, Object).
        index - The index of the value being transformed.
        transformed - The transformed value.
        Returns:
        The new accumulated value.
      • transformAll

        default A transformAll​(A accumulated,
                               ProjectionConverter<? super E,​? extends V> converter,
                               FromDocumentValueConvertContext context)
        Transforms all values with the given converter and the given context.

        This operation may be blocking.

        Parameters:
        accumulated - The accumulated value so far, returned by the last call to accumulate(Object, Object).
        converter - The projection converter (from F to V).
        context - The context to be passed to the projection converter.
        Returns:
        The new accumulated value.