Package civitas.celestis.util.array
Class DoubleFastArray
java.lang.Object
civitas.celestis.util.array.DoubleFastArray
- All Implemented Interfaces:
BaseArray<Double>,DoubleArray,Serializable,Iterable<Double>
A basic double array with no built-in synchronization or thread-safety measures.
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedDoubleFastArray(double[] array) Creates a new fast double array.DoubleFastArray(int length) Creates a new fast double array.Creates a new fast double array. -
Method Summary
Modifier and TypeMethodDescriptiondouble[]array()Returns a primitive array containing the elements of this array in their proper order.boxed()Returns an array containing the elements of this array in their boxed form.booleancontains(double v) Returns whether this array contains the provided valuev.booleanReturns whether this array contains multiple objects.booleanChecks for equality between this array and the provided objectobj.voidfill(double v) Fills this array with the provided valuev.voidfillRange(int s, int e, double v) Fills every slot of this array between the range of[s, e)with the provided valuev.voidforEach(BiConsumer<? super Integer, ? super Double> a) Executes the provided actionaonce for each element of this array.voidExecutes the provided actionaonce for each element of this array.doubleget(int i) Returns theith element of this array.inthashCode()Returns the hash code of this instance.iterator()Returns an iterator over every element of this array.intlength()Returns the length of this array.list()Returns an unmodifiable list containing the elements of this array in their proper order.Applies the provided mapper functionfto each element of this array, then returns a new array containing the return values of the functionf.<F> SafeArray<F>mapToObj(DoubleFunction<? extends F> f) Applies the provided mapper functionfto each element of this array, then returns a new array containing the return values of the functionf.Between this array and the provided arraya, this applies the merger functionfto each corresponding pair of elements, then returns a new array containing the return values of the merger functionf.voidreplaceAll(double oldValue, double newValue) Replaces all instances of the old value to the new value.voidreplaceFirst(double oldValue, double newValue) Replaces only the first instance of the old value to the new value.voidreplaceLast(double oldValue, double newValue) Replaces only the last instance of the old value to the new value.resize(int size) Returns a resized array whose elements are mapped from that of this array's elements.voidset(int i, double e) Sets theith element of this array.voidsetRange(int s, int e, DoubleArray a) Sets a sub-array of this array to the values of the provided sub-arraya.voidshuffle()Shuffles this array, randomizing its elements' order.voidsort()Sorts this array by its natural ascending order.voidsort(Comparator<? super Double> c) Sorts this array using the provided comparator functionc.stream()Returns a stream whose source is the elements of this array.subArray(int s, int e) Returns a sub-array of this array which represents a portion of this array between the range of[s, e).toString()Serializes this array into a string.tuple()Returns a tuple containing the elements of this array in their proper order.voidupdate(int i, DoubleUnaryOperator f) Updates theith element of this array with the provided update functionf.voidupdate(BiFunction<? super Integer, ? super Double, Double> f) Applies the provided update functionfto each element of this array, then assigns the return value of the function to the corresponding index of this array.voidApplies the provided update functionfto each element of this array, then assigns the return value of the function to the corresponding index of this array.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface civitas.celestis.util.array.DoubleArray
append, filter, prependMethods inherited from interface java.lang.Iterable
spliterator
-
Field Details
-
values
@Nonnull protected final double[] valuesThe internal array of values.
-
-
Constructor Details
-
DoubleFastArray
public DoubleFastArray(int length) Creates a new fast double array.- Parameters:
length- The length to initialize this array to
-
DoubleFastArray
Creates a new fast double array.- Parameters:
a- The array of which to copy elements from
-
DoubleFastArray
protected DoubleFastArray(@Nonnull double[] array) Creates a new fast double array. This is a direct assignment constructor, and thus is hidden to ensure safe usage.- Parameters:
array- The array of which to directly assign as the internal array
-
-
Method Details
-
length
public int length()Returns the length of this array.- Specified by:
lengthin interfaceBaseArray<Double>- Specified by:
lengthin interfaceDoubleArray- Returns:
- The number of elements this array contains
-
contains
public boolean contains(double v) Returns whether this array contains the provided valuev.- Specified by:
containsin interfaceDoubleArray- Parameters:
v- The value to check for containment- Returns:
trueif at least one element of this array is equal to the provided valuev
-
containsAll
Returns whether this array contains multiple objects.- Specified by:
containsAllin interfaceDoubleArray- Parameters:
i- The iterable object of which to check for containment- Returns:
trueif this array contains every element of the iterable object
-
get
Returns theith element of this array.- Specified by:
getin interfaceDoubleArray- Parameters:
i- The index of the element to get- Returns:
- The
ith element of this array - Throws:
IndexOutOfBoundsException- When the indexiis out of bounds
-
set
Sets theith element of this array.- Specified by:
setin interfaceDoubleArray- Parameters:
i- The index of the element to sete- The element of which to set to- Throws:
IndexOutOfBoundsException- When the indexiis out of bounds
-
update
Updates theith element of this array with the provided update functionf.- Specified by:
updatein interfaceDoubleArray- Parameters:
i- The index of the element to updatef- The update function of which to apply to the element- Throws:
IndexOutOfBoundsException- When the indexiis out of bounds
-
fill
public void fill(double v) Fills this array with the provided valuev. Every element will be reassigned.- Specified by:
fillin interfaceDoubleArray- Parameters:
v- The value to fill this array with
-
fillRange
public void fillRange(int s, int e, double v) Fills every slot of this array between the range of[s, e)with the provided valuev.- Specified by:
fillRangein interfaceDoubleArray- Parameters:
s- The starting index at which to start assigning values frome- The ending index at which to stop assigning values atv- The value of which to assign to every slot within the specified range
-
update
Applies the provided update functionfto each element of this array, then assigns the return value of the function to the corresponding index of this array.- Specified by:
updatein interfaceDoubleArray- Parameters:
f- The function of which to apply to each element of this array
-
update
Applies the provided update functionfto each element of this array, then assigns the return value of the function to the corresponding index of this array. The first parameter is the index of the value which was provided.- Specified by:
updatein interfaceDoubleArray- Parameters:
f- The function of which to apply to each element of this array
-
replaceAll
public void replaceAll(double oldValue, double newValue) Replaces all instances of the old value to the new value.- Specified by:
replaceAllin interfaceDoubleArray- Parameters:
oldValue- The old value to replacenewValue- The new value to replace to
-
replaceFirst
public void replaceFirst(double oldValue, double newValue) Replaces only the first instance of the old value to the new value. (starting from index0, and incrementing upwards)- Specified by:
replaceFirstin interfaceDoubleArray- Parameters:
oldValue- The old value to replacenewValue- The new value to replace to
-
replaceLast
public void replaceLast(double oldValue, double newValue) Replaces only the last instance of the old value to the new value. (starting from the last index, and decrementing downwards)- Specified by:
replaceLastin interfaceDoubleArray- Parameters:
oldValue- The old value to replacenewValue- The new value to replace to
-
subArray
Returns a sub-array of this array which represents a portion of this array between the range of[s, e). Changes in the sub-array will be reflected to this array. For example, callinga.subArray(1, 3).fill(null);will have the same effect as setting the values of indices1, 2of the original array tonull.- Specified by:
subArrayin interfaceDoubleArray- Parameters:
s- The starting index at which to start creating the sub-array (inclusive)e- The ending index at which to stop creating the sub-array (exclusive)- Returns:
- The sub-array representing the index range of
[s, e) - Throws:
IndexOutOfBoundsException- When the range is invalid, or is out of bounds
-
setRange
Sets a sub-array of this array to the values of the provided sub-arraya.- Specified by:
setRangein interfaceDoubleArray- Parameters:
s- The starting index at which to start copying values from (inclusive)e- The ending index at which to stop copying values from (exclusive)a- The sub-array containing the values to assign to this array- Throws:
IndexOutOfBoundsException- When the range is invalid, or is out of bounds
-
resize
Returns a resized array whose elements are mapped from that of this array's elements. If the new array is larger than this array, the unmappable part will not be populated, leaving it uninitialized asnull.- Specified by:
resizein interfaceDoubleArray- Parameters:
size- The size to resize this array to- Returns:
- The resized array
-
shuffle
public void shuffle()Shuffles this array, randomizing its elements' order.- Specified by:
shufflein interfaceBaseArray<Double>- Specified by:
shufflein interfaceDoubleArray
-
sort
public void sort()Sorts this array by its natural ascending order.- Specified by:
sortin interfaceBaseArray<Double>- Specified by:
sortin interfaceDoubleArray
-
sort
Sorts this array using the provided comparator functionc.- Specified by:
sortin interfaceBaseArray<Double>- Specified by:
sortin interfaceDoubleArray- Parameters:
c- The comparator function of which to sort this array with
-
map
Applies the provided mapper functionfto each element of this array, then returns a new array containing the return values of the functionf.- Specified by:
mapin interfaceDoubleArray- Parameters:
f- The function of which to apply to each element of this array- Returns:
- The resulting array
-
mapToObj
Applies the provided mapper functionfto each element of this array, then returns a new array containing the return values of the functionf.- Specified by:
mapToObjin interfaceDoubleArray- Type Parameters:
F- The type of element to map this array to- Parameters:
f- The function of which to apply to each element of this array- Returns:
- The resulting array
-
merge
@Nonnull public DoubleArray merge(@Nonnull DoubleArray a, @Nonnull DoubleBinaryOperator f) throws IllegalArgumentException Between this array and the provided arraya, this applies the merger functionfto each corresponding pair of elements, then returns a new array containing the return values of the merger functionf. In other words, this merges the two arrays into a new array using the provided merger functionf.- Specified by:
mergein interfaceDoubleArray- Parameters:
a- The array of which to merge this array withf- The merger function to handle the merging of the two arrays- Returns:
- The resulting array
- Throws:
IllegalArgumentException- When the provided arraya's length is different from that of this array's length
-
iterator
Returns an iterator over every element of this array. -
forEach
Executes the provided actionaonce for each element of this array. A reference to the element is provided as the first parameter of the action. -
forEach
Executes the provided actionaonce for each element of this array. The index of the element is provided as the first parameter of the action, and a reference to the element is provided as the second parameter of the action.- Specified by:
forEachin interfaceBaseArray<Double>- Specified by:
forEachin interfaceDoubleArray- Parameters:
a- The action to be performed for each element
-
array
@Nonnull public double[] array()Returns a primitive array containing the elements of this array in their proper order.- Specified by:
arrayin interfaceDoubleArray- Returns:
- The primitive array representation of this array
-
stream
Returns a stream whose source is the elements of this array.- Specified by:
streamin interfaceDoubleArray- Returns:
- A stream whose source is the elements of this array
- See Also:
-
list
Returns an unmodifiable list containing the elements of this array in their proper order.- Specified by:
listin interfaceBaseArray<Double>- Specified by:
listin interfaceDoubleArray- Returns:
- The list representation of this array
- See Also:
-
tuple
Returns a tuple containing the elements of this array in their proper order. UnlikeDoubleArray.list(), this operation cannot fail as tuples inherently support the usage ofnullas their values.- Specified by:
tuplein interfaceDoubleArray- Returns:
- The tuple representation of this array
- See Also:
-
boxed
Returns an array containing the elements of this array in their boxed form.- Specified by:
boxedin interfaceDoubleArray- Returns:
- The boxed object representation of this array
- See Also:
-
equals
Checks for equality between this array and the provided objectobj.- Specified by:
equalsin interfaceDoubleArray- Overrides:
equalsin classObject- Parameters:
obj- The object to compare to- Returns:
trueif the object is also a double array, and the number of elements, the order of the elements, and the elements' values are all equal
-
toString
Serializes this array into a string.- Specified by:
toStringin interfaceDoubleArray- Overrides:
toStringin classObject- Returns:
- The string representation of this array
-
hashCode
public int hashCode()Returns the hash code of this instance.
-