Class ParallelIterate
java.lang.Object
org.eclipse.collections.impl.parallel.ParallelIterate
public final class ParallelIterate extends Object
The ParallelIterate class contains several parallel algorithms that work with Collections. All of the higher
level parallel algorithms depend on the basic parallel algorithm named
forEach
. The forEach algorithm employs
a batching fork and join approach.
All Collections that are not either a RandomAccess
or List
are first converted to a Java array
using Iterate.toArray(Iterable)
, and then run with one of the ParallelArrayIterate.forEach
methods.
- See Also:
ParallelArrayIterate
-
Method Summary
Modifier and Type Method Description static <T, K, V> MutableMap<K,V>
aggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator)
static <T, K, V> MutableMap<K,V>
aggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, int batchSize)
static <T, K, V> MutableMap<K,V>
aggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, int batchSize, Executor executor)
static <T, K, V, R extends MutableMapIterable<K, V>>
RaggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, R mutableMap)
static <T, K, V, R extends MutableMapIterable<K, V>>
RaggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, R mutableMap, int batchSize)
static <T, K, V, R extends MutableMapIterable<K, V>>
RaggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, R mutableMap, int batchSize, Executor executor)
static <T, K, V> MutableMap<K,V>
aggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator)
static <T, K, V> MutableMap<K,V>
aggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, int batchSize)
static <T, K, V> MutableMap<K,V>
aggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, int batchSize, Executor executor)
static <T, K, V, R extends MutableMapIterable<K, V>>
RaggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, R mutableMap)
static <T, K, V, R extends MutableMapIterable<K, V>>
RaggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, R mutableMap, int batchSize)
static <T, K, V, R extends MutableMapIterable<K, V>>
RaggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, R mutableMap, int batchSize, Executor executor)
static <T, V> Collection<V>
collect(Iterable<T> iterable, Function<? super T,V> function)
Same effect asIterate.collect(Iterable, Function)
, but executed in parallel batches.static <T, V> Collection<V>
collect(Iterable<T> iterable, Function<? super T,V> function, boolean allowReorderedResult)
Same effect asIterate.collect(Iterable, Function)
, but executed in parallel batches, and with potentially reordered result.static <T, V, R extends Collection<V>>
Rcollect(Iterable<T> iterable, Function<? super T,V> function, R target, boolean allowReorderedResult)
Same effect asIterate.collect(Iterable, Function)
, but executed in parallel batches, and writing output into the specified collection.static <T, V, R extends Collection<V>>
Rcollect(Iterable<T> iterable, Function<? super T,V> function, R target, int batchSize, Executor executor, boolean allowReorderedResult)
static <T, V> Collection<V>
collectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,V> function)
Same effect asIterate.collectIf(Iterable, Predicate, Function)
, but executed in parallel batches.static <T, V> Collection<V>
collectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,V> function, boolean allowReorderedResult)
Same effect asIterate.collectIf(Iterable, Predicate, Function)
, but executed in parallel batches, and with potentially reordered results.static <T, V, R extends Collection<V>>
RcollectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,V> function, R target, boolean allowReorderedResult)
Same effect asIterate.collectIf(Iterable, Predicate, Function)
, but executed in parallel batches, and writing output into the specified collection.static <T, V, R extends Collection<V>>
RcollectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,V> function, R target, int batchSize, Executor executor, boolean allowReorderedResult)
static <T> int
count(Iterable<T> iterable, Predicate<? super T> predicate)
Same effect asIterate.count(Iterable, Predicate)
, but executed in parallel batches.static <T> int
count(Iterable<T> iterable, Predicate<? super T> predicate, int batchSize, Executor executor)
Same effect asIterate.count(Iterable, Predicate)
, but executed in parallel batches.static <T, V> Collection<V>
flatCollect(Iterable<T> iterable, Function<? super T,Collection<V>> function)
static <T, V> Collection<V>
flatCollect(Iterable<T> iterable, Function<? super T,Collection<V>> function, boolean allowReorderedResult)
static <T, V, R extends Collection<V>>
RflatCollect(Iterable<T> iterable, Function<? super T,Collection<V>> function, R target, boolean allowReorderedResult)
static <T, V, R extends Collection<V>>
RflatCollect(Iterable<T> iterable, Function<? super T,Collection<V>> function, R target, int batchSize, Executor executor, boolean allowReorderedResult)
static <T, BT extends Procedure<? super T>>
voidforEach(Iterable<T> iterable, BT procedure, int minForkSize, int taskCount)
Iterate over the collection specified in parallel batches using the specified minimum fork and task count sizes.static <T, BT extends Procedure<? super T>>
voidforEach(Iterable<T> iterable, BT procedure, int minForkSize, int taskCount, Executor executor)
static <T, BT extends Procedure<? super T>>
voidforEach(Iterable<T> iterable, BT procedure, Executor executor)
Iterate over the collection specified in parallel batches using default runtime parameter values and the specified executor.static <T> void
forEach(Iterable<T> iterable, Procedure<? super T> procedure)
Iterate over the collection specified in parallel batches using default runtime parameter values.static <T> void
forEach(Iterable<T> iterable, Procedure<? super T> procedure, int batchSize)
Iterate over the collection specified in parallel batches using default runtime parameter values.static <T> void
forEach(Iterable<T> iterable, Procedure<? super T> procedure, int batchSize, Executor executor)
static <T, BT extends Procedure<? super T>>
voidforEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner)
static <T, BT extends Procedure<? super T>>
voidforEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int batchSize)
Iterate over the collection specified in parallel batches using the default values for the task size.static <T, BT extends Procedure<? super T>>
voidforEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount)
Iterate over the collection specified in parallel batches using the default values for the task size.static <T, BT extends Procedure<? super T>>
voidforEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor)
static <T, BT extends Procedure<? super T>>
voidforEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int batchSize, Executor executor)
static <T, BT extends Procedure<? super T>>
voidforEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, Executor executor)
static <T, BT extends Procedure<? super T>>
voidforEachInBatchWithExecutor(BatchIterable<T> set, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor)
static <T, BT extends Procedure<? super T>>
voidforEachInListOnExecutor(List<T> list, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor)
static <T, BT extends ObjectIntProcedure<? super T>>
voidforEachWithIndex(Iterable<T> iterable, BT procedure, int minForkSize, int taskCount)
Iterate over the collection specified in parallel batches.static <T, BT extends ObjectIntProcedure<? super T>>
voidforEachWithIndex(Iterable<T> iterable, BT procedure, Executor executor)
Iterate over the collection specified in parallel batches using the default runtime parameters.static <T> void
forEachWithIndex(Iterable<T> iterable, ObjectIntProcedure<? super T> objectIntProcedure)
Iterate over the collection specified, in parallel batches using default runtime parameter values.static <T, BT extends ObjectIntProcedure<? super T>>
voidforEachWithIndex(Iterable<T> iterable, ObjectIntProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount)
static <T, BT extends ObjectIntProcedure<? super T>>
voidforEachWithIndex(Iterable<T> iterable, ObjectIntProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor)
static <T, BT extends ObjectIntProcedure<? super T>>
voidforEachWithIndex(Iterable<T> iterable, ObjectIntProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, Executor executor)
static <T, BT extends ObjectIntProcedure<? super T>>
voidforEachWithIndexInListOnExecutor(List<T> list, ObjectIntProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor)
static int
getDefaultMaxThreadPoolSize()
static int
getDefaultTaskCount()
static int
getTaskRatio()
static <K, V> MutableMultimap<K,V>
groupBy(Iterable<V> iterable, Function<? super V,? extends K> function)
Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap.static <K, V> MutableMultimap<K,V>
groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, int batchSize)
Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap.static <K, V> MutableMultimap<K,V>
groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, int batchSize, Executor executor)
Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap.static <K, V, R extends MutableMultimap<K, V>>
MutableMultimap<K,V>groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, R concurrentMultimap)
Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap.static <K, V, R extends MutableMultimap<K, V>>
MutableMultimap<K,V>groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, R concurrentMultimap, int batchSize)
Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap.static <K, V, R extends MutableMultimap<K, V>>
MutableMultimap<K,V>groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, R concurrentMultimap, int batchSize, Executor executor)
Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap.static ExecutorService
newPooledExecutor(int newPoolSize, String poolName, boolean useDaemonThreads)
Returns a brand new ExecutorService using the specified poolName with the specified maximum thread pool size.static ExecutorService
newPooledExecutor(String poolName, boolean useDaemonThreads)
Returns a brand new ExecutorService using the specified poolName and uses the optional property named to set the maximum thread pool size.static <T> Collection<T>
reject(Iterable<T> iterable, Predicate<? super T> predicate)
Same effect asIterate.reject(Iterable, Predicate)
, but executed in parallel batches.static <T> Collection<T>
reject(Iterable<T> iterable, Predicate<? super T> predicate, boolean allowReorderedResult)
Same effect asIterate.reject(Iterable, Predicate)
, but executed in parallel batches, and with a potentially reordered result.static <T, R extends Collection<T>>
Rreject(Iterable<T> iterable, Predicate<? super T> predicate, R target, boolean allowReorderedResult)
Same effect asIterate.reject(Iterable, Predicate)
, but executed in parallel batches, and writing output into the specified collection.static <T, R extends Collection<T>>
Rreject(Iterable<T> iterable, Predicate<? super T> predicate, R target, int batchSize, Executor executor, boolean allowReorderedResult)
static <T> Collection<T>
select(Iterable<T> iterable, Predicate<? super T> predicate)
Same effect asIterate.select(Iterable, Predicate)
, but executed in parallel batches.static <T> Collection<T>
select(Iterable<T> iterable, Predicate<? super T> predicate, boolean allowReorderedResult)
Same effect asIterate.select(Iterable, Predicate)
, but executed in parallel batches, and with a potentially reordered result.static <T, R extends Collection<T>>
Rselect(Iterable<T> iterable, Predicate<? super T> predicate, R target, boolean allowReorderedResult)
Same effect asIterate.select(Iterable, Predicate)
, but executed in parallel batches, and writing output into the specified collection.static <T, R extends Collection<T>>
Rselect(Iterable<T> iterable, Predicate<? super T> predicate, R target, int batchSize, Executor executor, boolean allowReorderedResult)
Same effect asIterate.select(Iterable, Predicate)
, but executed in parallel batches, and writing output into the specified collection.static <V, T> MutableMap<V,BigDecimal>
sumByBigDecimal(Iterable<T> iterable, Function<? super T,? extends V> groupBy, Function<? super T,BigDecimal> function)
static <V, T> MutableMap<V,BigInteger>
sumByBigInteger(Iterable<T> iterable, Function<? super T,? extends V> groupBy, Function<? super T,BigInteger> function)
static <T, V> ObjectDoubleMap<V>
sumByDouble(Iterable<T> iterable, Function<? super T,? extends V> groupBy, DoubleFunction<? super T> function)
static <T, V> ObjectDoubleMap<V>
sumByFloat(Iterable<T> iterable, Function<? super T,? extends V> groupBy, FloatFunction<? super T> function)
static <T, V> ObjectLongMap<V>
sumByInt(Iterable<T> iterable, Function<? super T,? extends V> groupBy, IntFunction<? super T> function)
static <T, V> ObjectLongMap<V>
sumByLong(Iterable<T> iterable, Function<? super T,? extends V> groupBy, LongFunction<? super T> function)
-
Method Details
-
forEachWithIndex
public static <T> void forEachWithIndex(Iterable<T> iterable, ObjectIntProcedure<? super T> objectIntProcedure)Iterate over the collection specified, in parallel batches using default runtime parameter values. TheObjectIntProcedure
used must be stateless, or use concurrent aware objects if they are to be shared.e.g.
final Map<Integer, Object> chm = new ConcurrentHashMap<Integer, Object>(); ParallelIterate.forEachWithIndex(collection, new ObjectIntProcedure() { public void value(Object object, int index) { chm.put(index, object); } });
-
forEachWithIndex
public static <T, BT extends ObjectIntProcedure<? super T>> void forEachWithIndex(Iterable<T> iterable, BT procedure, Executor executor)Iterate over the collection specified in parallel batches using the default runtime parameters. The ObjectIntProcedure used must be stateless, or use concurrent aware objects if they are to be shared. The code is executed against the specified executor.e.g. final Map<Integer, Object> chm = new ConcurrentHashMap<Integer, Object>(); ParallelIterate.forEachWithIndex(collection, new ObjectIntProcedure() { public void value(Object object, int index) { chm.put(index, object); } }, executor);
- Parameters:
executor
- Use this executor for all execution.
-
forEachWithIndex
public static <T, BT extends ObjectIntProcedure<? super T>> void forEachWithIndex(Iterable<T> iterable, BT procedure, int minForkSize, int taskCount)Iterate over the collection specified in parallel batches. The ObjectIntProcedure used must be stateless, or use concurrent aware objects if they are to be shared. The specified minimum fork size and task count are used instead of the default values.- Parameters:
minForkSize
- Only run in parallel if input collection is longer than this.taskCount
- How many parallel tasks to submit to the executor.- See Also:
forEachWithIndex(Iterable, ObjectIntProcedure)
-
forEachWithIndex
public static <T, BT extends ObjectIntProcedure<? super T>> void forEachWithIndex(Iterable<T> iterable, ObjectIntProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, Executor executor) -
forEachWithIndex
public static <T, BT extends ObjectIntProcedure<? super T>> void forEachWithIndex(Iterable<T> iterable, ObjectIntProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount) -
forEachWithIndex
public static <T, BT extends ObjectIntProcedure<? super T>> void forEachWithIndex(Iterable<T> iterable, ObjectIntProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor) -
forEachWithIndexInListOnExecutor
public static <T, BT extends ObjectIntProcedure<? super T>> void forEachWithIndexInListOnExecutor(List<T> list, ObjectIntProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor) -
forEach
Iterate over the collection specified in parallel batches using default runtime parameter values. TheProcedure
used must be stateless, or use concurrent aware objects if they are to be shared.e.g.
final Map<Object, Boolean> chm = new ConcurrentHashMap<Object, Boolean>(); ParallelIterate.forEach(collection, new Procedure() { public void value(Object object) { chm.put(object, Boolean.TRUE); } });
-
forEach
public static <T> void forEach(Iterable<T> iterable, Procedure<? super T> procedure, int batchSize)Iterate over the collection specified in parallel batches using default runtime parameter values. TheProcedure
used must be stateless, or use concurrent aware objects if they are to be shared.e.g.
final Map<Object, Boolean> chm = new ConcurrentHashMap<Object, Boolean>(); ParallelIterate.forEachBatchSize(collection, new Procedure() { public void value(Object object) { chm.put(object, Boolean.TRUE); } }, 100);
-
forEach
-
forEach
public static <T, BT extends Procedure<? super T>> void forEach(Iterable<T> iterable, BT procedure, Executor executor)Iterate over the collection specified in parallel batches using default runtime parameter values and the specified executor. TheProcedure
used must be stateless, or use concurrent aware objects if they are to be shared.- Parameters:
executor
- Use this executor for all execution.- See Also:
forEach(Iterable, Procedure)
-
forEach
public static <T, BT extends Procedure<? super T>> void forEach(Iterable<T> iterable, BT procedure, int minForkSize, int taskCount)Iterate over the collection specified in parallel batches using the specified minimum fork and task count sizes. TheProcedure
used must be stateless, or use concurrent aware objects if they are to be shared.- Parameters:
minForkSize
- Only run in parallel if input collection is longer than this.taskCount
- How many parallel tasks to submit to the executor. TODO: How does the taskCount relate to the number of threads in the executor?- See Also:
forEach(Iterable, Procedure)
-
forEach
-
forEach
public static <T, BT extends Procedure<? super T>> void forEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, Executor executor) -
forEach
public static <T, BT extends Procedure<? super T>> void forEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner) -
forEach
public static <T, BT extends Procedure<? super T>> void forEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int batchSize)Iterate over the collection specified in parallel batches using the default values for the task size. The ProcedureFactory can create stateful closures that will be collected and combined using the specified Combiner.e.g. The ParallelIterate.select() implementation CollectionCombiner<T, SelectProcedure<T>> combiner = CollectionCombiner.forSelect(collection); ParallelIterate.forEach(collection, new SelectProcedureFactory<T>(predicate, taskSize), combiner, 1000);
-
forEach
public static <T, BT extends Procedure<? super T>> void forEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int batchSize, Executor executor) -
forEach
public static <T, BT extends Procedure<? super T>> void forEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount)Iterate over the collection specified in parallel batches using the default values for the task size. The ProcedureFactory can create stateful closures that will be collected and combined using the specified Combiner.e.g. The ParallelIterate.select() implementation int taskCount = Math.max(DEFAULT_PARALLEL_TASK_COUNT, collection.size() / DEFAULT_MIN_FORK_SIZE); final int taskSize = collection.size() / taskCount / 2; CollectionCombiner<T, SelectProcedure<T>> combiner = CollectionCombiner.forSelect(collection); ParallelIterate.forEach(collection, new SelectProcedureFactory<T>(predicate, taskSize), combiner, DEFAULT_MIN_FORK_SIZE, taskCount);
-
forEach
public static <T, BT extends Procedure<? super T>> void forEach(Iterable<T> iterable, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor) -
forEachInListOnExecutor
public static <T, BT extends Procedure<? super T>> void forEachInListOnExecutor(List<T> list, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor) -
forEachInBatchWithExecutor
public static <T, BT extends Procedure<? super T>> void forEachInBatchWithExecutor(BatchIterable<T> set, ProcedureFactory<BT> procedureFactory, Combiner<BT> combiner, int minForkSize, int taskCount, Executor executor) -
select
Same effect asIterate.select(Iterable, Predicate)
, but executed in parallel batches.- Returns:
- The selected elements. The Collection will be of the same type as the input (List or Set) and will be in the same order as the input (if it is an ordered collection).
- See Also:
select(Iterable, Predicate, boolean)
-
select
public static <T> Collection<T> select(Iterable<T> iterable, Predicate<? super T> predicate, boolean allowReorderedResult)Same effect asIterate.select(Iterable, Predicate)
, but executed in parallel batches, and with a potentially reordered result.- Parameters:
allowReorderedResult
- If the result can be in a different order. Allowing reordering may yield faster execution.- Returns:
- The selected elements. The Collection will be of the same type (List or Set) as the input.
-
select
public static <T, R extends Collection<T>> R select(Iterable<T> iterable, Predicate<? super T> predicate, R target, boolean allowReorderedResult)Same effect asIterate.select(Iterable, Predicate)
, but executed in parallel batches, and writing output into the specified collection.- Parameters:
target
- Where to write the output.allowReorderedResult
- If the result can be in a different order. Allowing reordering may yield faster execution.- Returns:
- The 'target' collection, with the selected elements added.
-
select
public static <T, R extends Collection<T>> R select(Iterable<T> iterable, Predicate<? super T> predicate, R target, int batchSize, Executor executor, boolean allowReorderedResult)Same effect asIterate.select(Iterable, Predicate)
, but executed in parallel batches, and writing output into the specified collection.- Parameters:
target
- Where to write the output.allowReorderedResult
- If the result can be in a different order. Allowing reordering may yield faster execution.- Returns:
- The 'target' collection, with the selected elements added.
-
reject
Same effect asIterate.reject(Iterable, Predicate)
, but executed in parallel batches.- Returns:
- The rejected elements. The Collection will be of the same type as the input (List or Set) and will be in the same order as the input (if it is an ordered collection).
- See Also:
reject(Iterable, Predicate, boolean)
-
reject
public static <T> Collection<T> reject(Iterable<T> iterable, Predicate<? super T> predicate, boolean allowReorderedResult)Same effect asIterate.reject(Iterable, Predicate)
, but executed in parallel batches, and with a potentially reordered result.- Parameters:
allowReorderedResult
- If the result can be in a different order. Allowing reordering may yield faster execution.- Returns:
- The rejected elements. The Collection will be of the same type (List or Set) as the input.
-
reject
public static <T, R extends Collection<T>> R reject(Iterable<T> iterable, Predicate<? super T> predicate, R target, boolean allowReorderedResult)Same effect asIterate.reject(Iterable, Predicate)
, but executed in parallel batches, and writing output into the specified collection.- Parameters:
target
- Where to write the output.allowReorderedResult
- If the result can be in a different order. Allowing reordering may yield faster execution.- Returns:
- The 'target' collection, with the rejected elements added.
-
reject
public static <T, R extends Collection<T>> R reject(Iterable<T> iterable, Predicate<? super T> predicate, R target, int batchSize, Executor executor, boolean allowReorderedResult) -
count
Same effect asIterate.count(Iterable, Predicate)
, but executed in parallel batches.- Returns:
- The number of elements which satisfy the predicate.
-
count
public static <T> int count(Iterable<T> iterable, Predicate<? super T> predicate, int batchSize, Executor executor)Same effect asIterate.count(Iterable, Predicate)
, but executed in parallel batches.- Returns:
- The number of elements which satisfy the predicate.
-
collect
Same effect asIterate.collect(Iterable, Function)
, but executed in parallel batches.- Returns:
- The collected elements. The Collection will be of the same type as the input (List or Set) and will be in the same order as the input (if it is an ordered collection).
- See Also:
collect(Iterable, Function, boolean)
-
collect
public static <T, V> Collection<V> collect(Iterable<T> iterable, Function<? super T,V> function, boolean allowReorderedResult)Same effect asIterate.collect(Iterable, Function)
, but executed in parallel batches, and with potentially reordered result.- Parameters:
allowReorderedResult
- If the result can be in a different order. Allowing reordering may yield faster execution.- Returns:
- The collected elements. The Collection will be of the same type (List or Set) as the input.
-
collect
public static <T, V, R extends Collection<V>> R collect(Iterable<T> iterable, Function<? super T,V> function, R target, boolean allowReorderedResult)Same effect asIterate.collect(Iterable, Function)
, but executed in parallel batches, and writing output into the specified collection.- Parameters:
target
- Where to write the output.allowReorderedResult
- If the result can be in a different order. Allowing reordering may yield faster execution.- Returns:
- The 'target' collection, with the collected elements added.
-
collect
public static <T, V, R extends Collection<V>> R collect(Iterable<T> iterable, Function<? super T,V> function, R target, int batchSize, Executor executor, boolean allowReorderedResult) -
flatCollect
public static <T, V> Collection<V> flatCollect(Iterable<T> iterable, Function<? super T,Collection<V>> function) -
flatCollect
public static <T, V> Collection<V> flatCollect(Iterable<T> iterable, Function<? super T,Collection<V>> function, boolean allowReorderedResult) -
flatCollect
public static <T, V, R extends Collection<V>> R flatCollect(Iterable<T> iterable, Function<? super T,Collection<V>> function, R target, boolean allowReorderedResult) -
flatCollect
public static <T, V, R extends Collection<V>> R flatCollect(Iterable<T> iterable, Function<? super T,Collection<V>> function, R target, int batchSize, Executor executor, boolean allowReorderedResult) -
collectIf
public static <T, V> Collection<V> collectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,V> function)Same effect asIterate.collectIf(Iterable, Predicate, Function)
, but executed in parallel batches.- Returns:
- The collected elements. The Collection will be of the same type as the input (List or Set) and will be in the same order as the input (if it is an ordered collection).
- See Also:
collectIf(Iterable, Predicate, Function, boolean)
-
collectIf
public static <T, V> Collection<V> collectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,V> function, boolean allowReorderedResult)Same effect asIterate.collectIf(Iterable, Predicate, Function)
, but executed in parallel batches, and with potentially reordered results.- Parameters:
allowReorderedResult
- If the result can be in a different order. Allowing reordering may yield faster execution.- Returns:
- The collected elements. The Collection will be of the same type as the input (List or Set)
-
collectIf
public static <T, V, R extends Collection<V>> R collectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,V> function, R target, boolean allowReorderedResult)Same effect asIterate.collectIf(Iterable, Predicate, Function)
, but executed in parallel batches, and writing output into the specified collection.- Parameters:
target
- Where to write the output.allowReorderedResult
- If the result can be in a different order. Allowing reordering may yield faster execution.- Returns:
- The 'target' collection, with the collected elements added.
-
collectIf
public static <T, V, R extends Collection<V>> R collectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,V> function, R target, int batchSize, Executor executor, boolean allowReorderedResult) -
groupBy
public static <K, V> MutableMultimap<K,V> groupBy(Iterable<V> iterable, Function<? super V,? extends K> function)Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap. -
aggregateBy
public static <T, K, V> MutableMap<K,V> aggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator) -
aggregateBy
public static <T, K, V, R extends MutableMapIterable<K, V>> R aggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, R mutableMap) -
aggregateBy
public static <T, K, V> MutableMap<K,V> aggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, int batchSize) -
aggregateBy
public static <T, K, V, R extends MutableMapIterable<K, V>> R aggregateBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Function2<? super V,? super T,? extends V> nonMutatingAggregator, R mutableMap, int batchSize) -
aggregateBy
-
aggregateBy
-
aggregateInPlaceBy
public static <T, K, V> MutableMap<K,V> aggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator) -
aggregateInPlaceBy
public static <T, K, V, R extends MutableMapIterable<K, V>> R aggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, R mutableMap) -
aggregateInPlaceBy
public static <T, K, V> MutableMap<K,V> aggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, int batchSize) -
aggregateInPlaceBy
public static <T, K, V, R extends MutableMapIterable<K, V>> R aggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, R mutableMap, int batchSize) -
aggregateInPlaceBy
public static <T, K, V> MutableMap<K,V> aggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, int batchSize, Executor executor) -
aggregateInPlaceBy
public static <T, K, V, R extends MutableMapIterable<K, V>> R aggregateInPlaceBy(Iterable<T> iterable, Function<? super T,? extends K> groupBy, Function0<? extends V> zeroValueFactory, Procedure2<? super V,? super T> mutatingAggregator, R mutableMap, int batchSize, Executor executor) -
groupBy
public static <K, V, R extends MutableMultimap<K, V>> MutableMultimap<K,V> groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, R concurrentMultimap)Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap. -
groupBy
public static <K, V, R extends MutableMultimap<K, V>> MutableMultimap<K,V> groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, R concurrentMultimap, int batchSize)Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap. -
groupBy
public static <K, V> MutableMultimap<K,V> groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, int batchSize)Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap. -
groupBy
public static <K, V> MutableMultimap<K,V> groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, int batchSize, Executor executor)Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap. -
groupBy
public static <K, V, R extends MutableMultimap<K, V>> MutableMultimap<K,V> groupBy(Iterable<V> iterable, Function<? super V,? extends K> function, R concurrentMultimap, int batchSize, Executor executor)Same effect asIterate.groupBy(Iterable, Function)
, but executed in parallel batches, and writing output into a SynchronizedPutFastListMultimap. -
sumByDouble
public static <T, V> ObjectDoubleMap<V> sumByDouble(Iterable<T> iterable, Function<? super T,? extends V> groupBy, DoubleFunction<? super T> function) -
sumByFloat
public static <T, V> ObjectDoubleMap<V> sumByFloat(Iterable<T> iterable, Function<? super T,? extends V> groupBy, FloatFunction<? super T> function) -
sumByLong
public static <T, V> ObjectLongMap<V> sumByLong(Iterable<T> iterable, Function<? super T,? extends V> groupBy, LongFunction<? super T> function) -
sumByInt
public static <T, V> ObjectLongMap<V> sumByInt(Iterable<T> iterable, Function<? super T,? extends V> groupBy, IntFunction<? super T> function) -
sumByBigDecimal
public static <V, T> MutableMap<V,BigDecimal> sumByBigDecimal(Iterable<T> iterable, Function<? super T,? extends V> groupBy, Function<? super T,BigDecimal> function)- Since:
- 6.0
-
sumByBigInteger
public static <V, T> MutableMap<V,BigInteger> sumByBigInteger(Iterable<T> iterable, Function<? super T,? extends V> groupBy, Function<? super T,BigInteger> function)- Since:
- 6.0
-
newPooledExecutor
public static ExecutorService newPooledExecutor(int newPoolSize, String poolName, boolean useDaemonThreads)Returns a brand new ExecutorService using the specified poolName with the specified maximum thread pool size. The same poolName may be used more than once resulting in multiple pools with the same name.The pool will be initialised with newPoolSize threads. If that number of threads are in use and another thread is requested, the pool will reject execution and the submitting thread will execute the task.
-
newPooledExecutor
Returns a brand new ExecutorService using the specified poolName and uses the optional property named to set the maximum thread pool size. The same poolName may be used more than once resulting in multiple pools with the same name. -
getDefaultTaskCount
public static int getDefaultTaskCount() -
getDefaultMaxThreadPoolSize
public static int getDefaultMaxThreadPoolSize() -
getTaskRatio
public static int getTaskRatio()
-