public static <T, R extends Collection<T>> R select(
            Iterable<T> iterable,
            Predicate<? super T> predicate,
            R target,
            int batchSize,
            ForkJoinPool executor,
            boolean allowReorderedResult)
    {
        SelectProcedureCombiner<T> combiner = new SelectProcedureCombiner<>(iterable, target, 10, allowReorderedResult);
        SelectProcedureFactory<T> procedureFactory = new SelectProcedureFactory<>(predicate, batchSize);
        int taskCount = FJIterate.calculateTaskCount(iterable, batchSize);
        FJIterate.forEach(iterable, procedureFactory, combiner, batchSize, taskCount, executor);
        return (R) combiner.getResult();
    }
public static < T , R extends Collection < T > > R select ( Iterable < T > iterable , Predicate < ? super T > predicate , R target , int batchSize , ForkJoinPool executor , boolean allowReorderedResult ) { SelectProcedureCombiner < T > combiner = new SelectProcedureCombiner < > ( iterable , target , 10 , allowReorderedResult ) ; SelectProcedureFactory < T > procedureFactory = new SelectProcedureFactory < > ( predicate , batchSize ) ; int taskCount = FJIterate . calculateTaskCount ( iterable , batchSize ) ; FJIterate . forEach ( iterable , procedureFactory , combiner , batchSize , taskCount , executor ) ; return ( R ) combiner . getResult ( ) ; }
Same effect as {@link Iterate#select(Iterable, Predicate)}, but executed in parallel batches,
and writing output into the specified collection.

@param target               Where to write the output.
@param allowReorderedResult If the result can be in a different order.
Allowing reordering may yield faster execution.
@return The 'target' collection, with the selected elements added.