|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectextra166y.AbstractParallelAnyArray
extra166y.ParallelDoubleArrayWithDoubleMapping
extra166y.ParallelDoubleArrayWithFilter
extra166y.ParallelDoubleArrayWithBounds
extra166y.ParallelDoubleArray
public class ParallelDoubleArray
An array of doubles supporting parallel operations. This class
provides methods supporting the same operations as ParallelArray
, but specialized for scalar doubles. It additionally
provides a few methods specific to numerical values.
Nested Class Summary | |
---|---|
static interface |
ParallelDoubleArray.SummaryStatistics
Summary statistics for a possibly bounded, filtered, and/or mapped ParallelDoubleArray. |
Constructor Summary | |
---|---|
protected |
ParallelDoubleArray(ForkJoinPool executor,
double[] array,
int limit)
Constructor for use by subclasses to create a new ParallelDoubleArray using the given executor, and initially using the supplied array, with effective size bound by the given limit. |
Method Summary | ||
---|---|---|
ParallelDoubleArray |
addAll(double[] other)
Equivalent to asList().addAll but specialized for array arguments and likely to be more efficient. |
|
ParallelDoubleArray |
addAll(ParallelDoubleArrayWithDoubleMapping other)
Appends all (possibly bounded, filtered, or mapped) elements of the given ParallelDoubleArray, resizing and/or reallocating this array if necessary. |
|
ParallelDoubleArray |
all()
Returns a new ParallelDoubleArray holding all elements |
|
ParallelDoubleArray |
allUniqueElements()
Returns a new ParallelDoubleArray containing only the unique elements of this array (that is, without any duplicates). |
|
void |
apply(Ops.DoubleProcedure procedure)
Applies the given procedure to elements |
|
java.util.List<java.lang.Double> |
asList()
Returns a view of this ParallelDoubleArray as a List. |
|
int |
binarySearch(double target)
Assuming this array is sorted, returns the index of an element equal to given target, or -1 if not present. |
|
int |
binarySearch(double target,
Ops.DoubleComparator comparator)
Assuming this array is sorted with respect to the given comparator, returns the index of an element equal to given target, or -1 if not present. |
|
static ParallelDoubleArray |
create(int size,
ForkJoinPool executor)
Creates a new ParallelDoubleArray using the given executor and an array of the given size |
|
static ParallelDoubleArray |
createEmpty(int size,
ForkJoinPool executor)
Creates a new ParallelDoubleArray using the given executor and an array of the given size, but with an initial effective size of zero, enabling incremental insertion via asList() operations. |
|
static ParallelDoubleArray |
createFromCopy(double[] source,
ForkJoinPool executor)
Creates a new ParallelDoubleArray using the given executor and initially holding copies of the given source elements. |
|
static ParallelDoubleArray |
createFromCopy(int size,
double[] source,
ForkJoinPool executor)
Creates a new ParallelDoubleArray using an array of the given size, initially holding copies of the given source truncated or padded with zeros to obtain the specified length. |
|
static ParallelDoubleArray |
createUsingHandoff(double[] handoff,
ForkJoinPool executor)
Creates a new ParallelDoubleArray initially using the given array and executor. |
|
ParallelDoubleArray |
cumulate(Ops.DoubleReducer reducer,
double base)
Replaces each element with the running cumulation of applying the given reducer. |
|
ParallelDoubleArray |
cumulateSum()
Replaces each element with the running sum |
|
static ForkJoinPool |
defaultExecutor()
Returns a common default executor for use in ParallelArrays. |
|
double |
get(int i)
Returns the element of the array at the given index |
|
double[] |
getArray()
Returns the underlying array used for computations |
|
ForkJoinPool |
getExecutor()
Returns the executor used for computations |
|
boolean |
hasAllEqualElements(ParallelDoubleArrayWithDoubleMapping other)
Returns true if all elements at the same relative positions of this and other array are equal. |
|
int |
indexOf(double target)
Returns the index of some element equal to given target, or -1 if not present |
|
java.util.Iterator<java.lang.Double> |
iterator()
Returns an iterator stepping through each element of the array up to the current limit. |
|
double |
max()
Returns the maximum element, or -Double.MAX_VALUE if empty |
|
double |
max(Ops.DoubleComparator comparator)
Returns the maximum element, or -Double.MAX_VALUE if empty |
|
double |
min()
Returns the minimum element, or Double.MAX_VALUE if empty, |
|
double |
min(Ops.DoubleComparator comparator)
Returns the minimum element, or Double.MAX_VALUE if empty |
|
double |
precumulate(Ops.DoubleReducer reducer,
double base)
Replaces each element with the cumulation of applying the given reducer to all previous values, and returns the total reduction. |
|
double |
precumulateSum()
Replaces each element with its prefix sum |
|
double |
reduce(Ops.DoubleReducer reducer,
double base)
Returns reduction of elements |
|
ParallelDoubleArray |
removeAll(Ops.DoublePredicate selector)
Removes from the array all elements for which the given selector holds. |
|
ParallelDoubleArray |
removeConsecutiveDuplicates()
Removes consecutive elements that are equal, shifting others leftward, and possibly decreasing size. |
|
ParallelDoubleArray |
replaceWithGeneratedValue(Ops.DoubleGenerator generator)
Replaces elements with the results of applying the given generator. |
|
ParallelDoubleArray |
replaceWithMappedIndex(Ops.IntAndDoubleToDouble op)
Replaces elements with the results of applying the given mapping to each index and current element value |
|
ParallelDoubleArray |
replaceWithMappedIndex(Ops.IntToDouble op)
Replaces elements with the results of applying the given op to their indices. |
|
ParallelDoubleArray |
replaceWithMapping(Ops.BinaryDoubleOp combiner,
double[] other)
Replaces elements with results of applying op(thisElement, otherElement) |
|
ParallelDoubleArray |
replaceWithMapping(Ops.BinaryDoubleOp combiner,
ParallelDoubleArrayWithDoubleMapping other)
Replaces elements with results of applying op(thisElement, otherElement) |
|
ParallelDoubleArray |
replaceWithMapping(Ops.DoubleOp op)
Replaces elements with the results of applying the given op to their current values. |
|
ParallelDoubleArray |
replaceWithValue(double value)
Replaces elements with the given value. |
|
void |
set(int i,
double x)
Sets the element of the array at the given index to the given value |
|
void |
setLimit(int newLimit)
Ensures that the underlying array can be accessed up to the given upper bound, reallocating and copying the underlying array to expand if necessary. |
|
int |
size()
Returns the effective size of the underlying array. |
|
ParallelDoubleArray |
sort()
Sorts the array, assuming all elements are Comparable. |
|
ParallelDoubleArray |
sort(Ops.DoubleComparator comparator)
Sorts the array. |
|
double |
sum()
Returns the sum of elements |
|
ParallelDoubleArray.SummaryStatistics |
summary()
Returns summary statistics, using natural comparator |
|
ParallelDoubleArray.SummaryStatistics |
summary(Ops.DoubleComparator comparator)
Returns summary statistics, using the given comparator to locate minimum and maximum elements. |
|
java.lang.String |
toString()
Equivalent to asList().toString() |
|
ParallelDoubleArrayWithBounds |
withBounds(int firstIndex,
int upperBound)
Returns an operation prefix that causes a method to operate only on the elements of the array between firstIndex (inclusive) and upperBound (exclusive). |
|
ParallelDoubleArrayWithFilter |
withFilter(Ops.BinaryDoublePredicate selector,
ParallelDoubleArrayWithDoubleMapping other)
Returns an operation prefix that causes a method to operate only on elements for which the given binary selector returns true |
|
ParallelDoubleArrayWithFilter |
withFilter(Ops.DoublePredicate selector)
Returns an operation prefix that causes a method to operate only on the elements of the array for which the given selector returns true |
|
ParallelDoubleArrayWithFilter |
withIndexedFilter(Ops.IntAndDoublePredicate selector)
Returns an operation prefix that causes a method to operate only on elements for which the given indexed selector returns true |
|
ParallelDoubleArrayWithDoubleMapping |
withIndexedMapping(Ops.IntAndDoubleToDouble mapper)
Returns an operation prefix that causes a method to operate on mappings of this array using the given mapper that accepts as arguments an element's current index and value, and produces a new value. |
|
ParallelDoubleArrayWithLongMapping |
withIndexedMapping(Ops.IntAndDoubleToLong mapper)
Returns an operation prefix that causes a method to operate on mappings of this array using the given mapper that accepts as arguments an element's current index and value, and produces a new value. |
|
|
withIndexedMapping(Ops.IntAndDoubleToObject<? extends U> mapper)
Returns an operation prefix that causes a method to operate on mappings of this array using the given mapper that accepts as arguments an element's current index and value, and produces a new value. |
|
ParallelDoubleArrayWithDoubleMapping |
withMapping(Ops.BinaryDoubleOp combiner,
ParallelDoubleArrayWithDoubleMapping other)
Returns an operation prefix that causes a method to operate on binary mappings of this array and the other array. |
|
ParallelDoubleArrayWithLongMapping |
withMapping(Ops.DoubleAndDoubleToLong combiner,
ParallelDoubleArrayWithDoubleMapping other)
Returns an operation prefix that causes a method to operate on binary mappings of this array and the other array. |
|
|
withMapping(Ops.DoubleAndDoubleToObject<? extends V> combiner,
ParallelDoubleArrayWithDoubleMapping other)
Returns an operation prefix that causes a method to operate on binary mappings of this array and the other array. |
|
ParallelDoubleArrayWithDoubleMapping |
withMapping(Ops.DoubleAndLongToDouble combiner,
ParallelLongArrayWithLongMapping other)
Returns an operation prefix that causes a method to operate on binary mappings of this array and the other array. |
|
ParallelDoubleArrayWithLongMapping |
withMapping(Ops.DoubleAndLongToLong combiner,
ParallelLongArrayWithLongMapping other)
Returns an operation prefix that causes a method to operate on binary mappings of this array and the other array. |
|
|
withMapping(Ops.DoubleAndLongToObject<? extends V> combiner,
ParallelLongArrayWithLongMapping other)
Returns an operation prefix that causes a method to operate on binary mappings of this array and the other array. |
|
|
withMapping(Ops.DoubleAndObjectToDouble<? super V> combiner,
ParallelArrayWithMapping<W,V> other)
Returns an operation prefix that causes a method to operate on binary mappings of this array and the other array. |
|
|
withMapping(Ops.DoubleAndObjectToLong<? super V> combiner,
ParallelArrayWithMapping<W,V> other)
Returns an operation prefix that causes a method to operate on binary mappings of this array and the other array. |
|
|
withMapping(Ops.DoubleAndObjectToObject<? super V,? extends W> combiner,
ParallelArrayWithMapping<X,V> other)
Returns an operation prefix that causes a method to operate on binary mappings of this array and the other array. |
|
ParallelDoubleArrayWithDoubleMapping |
withMapping(Ops.DoubleOp op)
Returns an operation prefix that causes a method to operate on mapped elements of the array using the given op. |
|
ParallelDoubleArrayWithLongMapping |
withMapping(Ops.DoubleToLong op)
Returns an operation prefix that causes a method to operate on mapped elements of the array using the given op. |
|
|
withMapping(Ops.DoubleToObject<? extends U> op)
Returns an operation prefix that causes a method to operate on mapped elements of the array using the given op. |
Methods inherited from class extra166y.ParallelDoubleArrayWithDoubleMapping |
---|
sequentially |
Methods inherited from class extra166y.AbstractParallelAnyArray |
---|
anyIndex, isEmpty |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
protected ParallelDoubleArray(ForkJoinPool executor, double[] array, int limit)
create(int, ForkJoinPool)
,
createEmpty(int, ForkJoinPool)
, createUsingHandoff(double[], ForkJoinPool)
or createFromCopy(double[], ForkJoinPool)
.
executor
- the executorarray
- the arraylimit
- the upper bound limitMethod Detail |
---|
public static ForkJoinPool defaultExecutor()
public static ParallelDoubleArray create(int size, ForkJoinPool executor)
size
- the array sizeexecutor
- the executorpublic static ParallelDoubleArray createUsingHandoff(double[] handoff, ForkJoinPool executor)
handoff
- the arrayexecutor
- the executorpublic static ParallelDoubleArray createFromCopy(double[] source, ForkJoinPool executor)
source
- the source of initial elementsexecutor
- the executorpublic static ParallelDoubleArray createFromCopy(int size, double[] source, ForkJoinPool executor)
source
- the source of initial elementssize
- the array sizeexecutor
- the executorpublic static ParallelDoubleArray createEmpty(int size, ForkJoinPool executor)
asList()
operations.
size
- the array sizeexecutor
- the executorpublic ForkJoinPool getExecutor()
public void apply(Ops.DoubleProcedure procedure)
apply
in class ParallelDoubleArrayWithDoubleMapping
procedure
- the procedurepublic double reduce(Ops.DoubleReducer reducer, double base)
reduce
in class ParallelDoubleArrayWithDoubleMapping
reducer
- the reducerbase
- the result for an empty array
public ParallelDoubleArray all()
all
in class ParallelDoubleArrayWithDoubleMapping
public ParallelDoubleArray replaceWithMapping(Ops.DoubleOp op)
replaceWithMapping
in class ParallelDoubleArrayWithFilter
op
- the op
public ParallelDoubleArray replaceWithMappedIndex(Ops.IntToDouble op)
replaceWithMappedIndex
in class ParallelDoubleArrayWithFilter
op
- the op
public ParallelDoubleArray replaceWithMappedIndex(Ops.IntAndDoubleToDouble op)
replaceWithMappedIndex
in class ParallelDoubleArrayWithFilter
op
- the op
public ParallelDoubleArray replaceWithGeneratedValue(Ops.DoubleGenerator generator)
replaceWithGeneratedValue
in class ParallelDoubleArrayWithFilter
generator
- the generator
public ParallelDoubleArray replaceWithValue(double value)
replaceWithValue
in class ParallelDoubleArrayWithFilter
value
- the value
public ParallelDoubleArray replaceWithMapping(Ops.BinaryDoubleOp combiner, ParallelDoubleArrayWithDoubleMapping other)
replaceWithMapping
in class ParallelDoubleArrayWithFilter
other
- the other arraycombiner
- the combiner
java.lang.ArrayIndexOutOfBoundsException
- if other array has
fewer elements than this array.public ParallelDoubleArray replaceWithMapping(Ops.BinaryDoubleOp combiner, double[] other)
replaceWithMapping
in class ParallelDoubleArrayWithFilter
other
- the other arraycombiner
- the combiner
java.lang.ArrayIndexOutOfBoundsException
- if other array has
fewer elements than this array.public int indexOf(double target)
target
- the element to search for
public int binarySearch(double target)
target
- the element to search for
public int binarySearch(double target, Ops.DoubleComparator comparator)
target
- the element to search forcomparator
- the comparator
public ParallelDoubleArray.SummaryStatistics summary(Ops.DoubleComparator comparator)
summary
in class ParallelDoubleArrayWithDoubleMapping
comparator
- the comparator to use for
locating minimum and maximum elements
public ParallelDoubleArray.SummaryStatistics summary()
summary
in class ParallelDoubleArrayWithDoubleMapping
public double min(Ops.DoubleComparator comparator)
min
in class ParallelDoubleArrayWithDoubleMapping
comparator
- the comparator
public double min()
min
in class ParallelDoubleArrayWithDoubleMapping
public double max(Ops.DoubleComparator comparator)
max
in class ParallelDoubleArrayWithDoubleMapping
comparator
- the comparator
public double max()
max
in class ParallelDoubleArrayWithDoubleMapping
public ParallelDoubleArray cumulate(Ops.DoubleReducer reducer, double base)
reducer
- the reducerbase
- the result for an empty array
public double precumulate(Ops.DoubleReducer reducer, double base)
reducer
- the reducerbase
- the result for an empty array
public ParallelDoubleArray sort(Ops.DoubleComparator comparator)
comparator
- the comparator to use
public ParallelDoubleArray sort()
java.lang.ClassCastException
- if any element is not Comparable.public ParallelDoubleArray removeConsecutiveDuplicates()
public ParallelDoubleArray addAll(double[] other)
other
- the elements to add
public ParallelDoubleArray addAll(ParallelDoubleArrayWithDoubleMapping other)
other
- the elements to add
public ParallelDoubleArray allUniqueElements()
allUniqueElements
in class ParallelDoubleArrayWithFilter
public ParallelDoubleArray removeAll(Ops.DoublePredicate selector)
selector
- the selector
public boolean hasAllEqualElements(ParallelDoubleArrayWithDoubleMapping other)
hasAllEqualElements
in class ParallelDoubleArrayWithFilter
other
- the other array
public double sum()
sum
in class ParallelDoubleArrayWithDoubleMapping
public ParallelDoubleArray cumulateSum()
public double precumulateSum()
public ParallelDoubleArrayWithBounds withBounds(int firstIndex, int upperBound)
firstIndex
- the lower bound (inclusive)upperBound
- the upper bound (exclusive)
public ParallelDoubleArrayWithFilter withFilter(Ops.DoublePredicate selector)
selector
- the selector
public ParallelDoubleArrayWithFilter withFilter(Ops.BinaryDoublePredicate selector, ParallelDoubleArrayWithDoubleMapping other)
withFilter
in class ParallelDoubleArrayWithFilter
selector
- the selector
public ParallelDoubleArrayWithFilter withIndexedFilter(Ops.IntAndDoublePredicate selector)
selector
- the selector
public <U> ParallelDoubleArrayWithMapping<U> withMapping(Ops.DoubleToObject<? extends U> op)
op
- the op
public ParallelDoubleArrayWithDoubleMapping withMapping(Ops.DoubleOp op)
op
- the op
public ParallelDoubleArrayWithLongMapping withMapping(Ops.DoubleToLong op)
op
- the op
public <V,W,X> ParallelDoubleArrayWithMapping<W> withMapping(Ops.DoubleAndObjectToObject<? super V,? extends W> combiner, ParallelArrayWithMapping<X,V> other)
withMapping
in class ParallelDoubleArrayWithDoubleMapping
combiner
- the combinerother
- the other array
java.lang.IllegalArgumentException
- if other array is a
filtered view (all filters must precede all mappings).public <V> ParallelDoubleArrayWithMapping<V> withMapping(Ops.DoubleAndDoubleToObject<? extends V> combiner, ParallelDoubleArrayWithDoubleMapping other)
withMapping
in class ParallelDoubleArrayWithDoubleMapping
combiner
- the combinerother
- the other array
java.lang.IllegalArgumentException
- if other array is a
filtered view (all filters must precede all mappings).public <V> ParallelDoubleArrayWithMapping<V> withMapping(Ops.DoubleAndLongToObject<? extends V> combiner, ParallelLongArrayWithLongMapping other)
withMapping
in class ParallelDoubleArrayWithDoubleMapping
combiner
- the combinerother
- the other array
java.lang.IllegalArgumentException
- if other array is a
filtered view (all filters must precede all mappings).public <V,W> ParallelDoubleArrayWithDoubleMapping withMapping(Ops.DoubleAndObjectToDouble<? super V> combiner, ParallelArrayWithMapping<W,V> other)
withMapping
in class ParallelDoubleArrayWithDoubleMapping
combiner
- the combinerother
- the other array
java.lang.IllegalArgumentException
- if other array is a
filtered view (all filters must precede all mappings).public ParallelDoubleArrayWithDoubleMapping withMapping(Ops.BinaryDoubleOp combiner, ParallelDoubleArrayWithDoubleMapping other)
withMapping
in class ParallelDoubleArrayWithDoubleMapping
combiner
- the combinerother
- the other array
java.lang.IllegalArgumentException
- if other array is a
filtered view (all filters must precede all mappings).public ParallelDoubleArrayWithDoubleMapping withMapping(Ops.DoubleAndLongToDouble combiner, ParallelLongArrayWithLongMapping other)
withMapping
in class ParallelDoubleArrayWithDoubleMapping
combiner
- the combinerother
- the other array
java.lang.IllegalArgumentException
- if other array is a
filtered view (all filters must precede all mappings).public <V,W> ParallelDoubleArrayWithLongMapping withMapping(Ops.DoubleAndObjectToLong<? super V> combiner, ParallelArrayWithMapping<W,V> other)
withMapping
in class ParallelDoubleArrayWithDoubleMapping
combiner
- the combinerother
- the other array
java.lang.IllegalArgumentException
- if other array is a
filtered view (all filters must precede all mappings).public ParallelDoubleArrayWithLongMapping withMapping(Ops.DoubleAndDoubleToLong combiner, ParallelDoubleArrayWithDoubleMapping other)
withMapping
in class ParallelDoubleArrayWithDoubleMapping
combiner
- the combinerother
- the other array
java.lang.IllegalArgumentException
- if other array is a
filtered view (all filters must precede all mappings).public ParallelDoubleArrayWithLongMapping withMapping(Ops.DoubleAndLongToLong combiner, ParallelLongArrayWithLongMapping other)
withMapping
in class ParallelDoubleArrayWithDoubleMapping
combiner
- the combinerother
- the other array
java.lang.IllegalArgumentException
- if other array is a
filtered view (all filters must precede all mappings).public <U> ParallelDoubleArrayWithMapping<U> withIndexedMapping(Ops.IntAndDoubleToObject<? extends U> mapper)
mapper
- the mapper
public ParallelDoubleArrayWithDoubleMapping withIndexedMapping(Ops.IntAndDoubleToDouble mapper)
mapper
- the mapper
public ParallelDoubleArrayWithLongMapping withIndexedMapping(Ops.IntAndDoubleToLong mapper)
mapper
- the mapper
public java.util.Iterator<java.lang.Double> iterator()
asList()
.
public java.util.List<java.lang.Double> asList()
ArrayList
, and may be used to modify, replace or extend
the bounds of the array underlying this ParallelDoubleArray.
The methods supported by this list view are not in
general implemented as parallel operations. This list is also
not itself thread-safe. In particular, performing list updates
while other parallel operations are in progress has undefined
(and surely undesired) effects.
public int size()
setLimit(int)
), or the length of the array otherwise.
size
in class AbstractParallelAnyArray
public double[] getArray()
public double get(int i)
i
- the index
public void set(int i, double x)
i
- the indexx
- the valuepublic java.lang.String toString()
toString
in class java.lang.Object
public final void setLimit(int newLimit)
newLimit
- the new upper bound
java.lang.IllegalArgumentException
- if newLimit less than zero.
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |