public final class Array<A>
extends java.lang.Object
implements java.lang.Iterable<A>
Modifier and Type | Class and Description |
---|---|
static class |
Array.ImmutableProjection<A>
Projects an array by providing only operations which do not mutate.
|
Modifier and Type | Method and Description |
---|---|
Array<A> |
append(Array<A> aas)
Appends the given array to this array.
|
<B> Array<B> |
apply(Array<F<A,B>> lf)
Performs function application within an array (applicative functor pattern).
|
java.lang.Object[] |
array()
Returns a copy of the underlying primitive array.
|
static <A> Array<A> |
array(A... as)
Constructs an array from the given elements.
|
A[] |
array(java.lang.Class<A[]> c)
Returns a copy of the underlying primitive array.
|
static <A> Array<A> |
arrayArray(A... as)
Returns a copy of the underlying primitive array.
|
java.util.List<A> |
asJavaList()
Projects an unmodifiable list view of this array.
|
<B,C> Array<C> |
bind(Array<B> sb,
F<A,F<B,C>> f)
Binds the given function across each element of this array and the given array with a final
join.
|
<B,C> Array<C> |
bind(Array<B> sb,
F2<A,B,C> f)
Binds the given function across each element of this array and the given array with a final
join.
|
<B> Array<B> |
bind(F<A,Array<B>> f)
Binds the given function across each element of this array with a final join.
|
static <T> T[] |
copyOf(T[] a,
int len) |
static <T,U> T[] |
copyOf(U[] a,
int len,
java.lang.Class<? extends T[]> newType) |
static char[] |
copyOfRange(char[] a,
int from,
int to) |
static <A> Array<A> |
empty()
Returns an empty array.
|
boolean |
equals(java.lang.Object o) |
boolean |
exists(F<A,java.lang.Boolean> f)
Returns
true if the predicate holds for at least one of the elements of this
array, false otherwise (false for the empty array). |
Array<A> |
filter(F<A,java.lang.Boolean> f)
Filters elements from this array by returning only elements which produce
true
when the given function is applied to them. |
Option<A> |
find(F<A,java.lang.Boolean> f)
Finds the first occurrence of an element that matches the given predicate or no value if no
elements match.
|
<B> B |
foldLeft(F<B,F<A,B>> f,
B b)
Performs a left-fold reduction across this array.
|
<B> B |
foldLeft(F2<B,A,B> f,
B b)
Performs a left-fold reduction across this array.
|
<B> B |
foldRight(F<A,F<B,B>> f,
B b)
Performs a right-fold reduction across this array.
|
<B> B |
foldRight(F2<A,B,B> f,
B b)
Performs a right-fold reduction across this array.
|
boolean |
forall(F<A,java.lang.Boolean> f)
Returns
true if the predicate holds for all of the elements of this array,
false otherwise (true for the empty array). |
Unit |
foreach(F<A,Unit> f)
Performs a side-effect for each element of this array.
|
void |
foreachDoEffect(Effect1<A> f)
Performs a side-effect for each element of this array.
|
A |
get(int index)
Returns the element at the given index if it exists, fails otherwise.
|
int |
hashCode() |
Array.ImmutableProjection<A> |
immutable() |
boolean |
isEmpty()
Returns
true is this array is empty, false otherwise. |
boolean |
isNotEmpty()
Returns
false is this array is empty, true otherwise. |
static <A> Array<A> |
iterableArray(java.lang.Iterable<A> i)
Takes the given iterable to an array.
|
java.util.Iterator<A> |
iterator()
Returns an iterator for this array.
|
static <A> Array<A> |
iteratorArray(java.util.Iterator<A> i)
Creates an Array from the iterator.
|
static <A> F<Array<Array<A>>,Array<A>> |
join()
A first-class version of join
|
static <A> Array<A> |
join(Array<Array<A>> o)
Joins the given array of arrays using a bind operation.
|
int |
length()
Returns the length of this array.
|
static <A,B> F<F<A,B>,F<Array<A>,Array<B>>> |
map()
First-class map function for Arrays.
|
<B> Array<B> |
map(F<A,B> f)
Maps the given function across this array.
|
static Array<java.lang.Integer> |
range(int from,
int to)
Returns an array of integers from the given
from value (inclusive) to the given
to value (exclusive). |
Array<A> |
reverse()
Reverse this array in constant stack space.
|
<B> Array<B> |
scanLeft(F<B,F<A,B>> f,
B b)
Performs a fold left accummulating and returns an array of the intermediate results.
|
<B> Array<B> |
scanLeft(F2<B,A,B> f,
B b)
Performs a left-fold accummulating and returns an array of the intermediate results.
|
Array<A> |
scanLeft1(F<A,F<A,A>> f)
Performs a left-fold accummulating using first array element as a starting value
and returns an array of the intermediate results.
|
Array<A> |
scanLeft1(F2<A,A,A> f)
Performs a left-fold accummulating using first array element as a starting value
and returns an array of the intermediate results.
|
<B> Array<B> |
scanRight(F<A,F<B,B>> f,
B b)
Performs a right-fold accummulating and returns an array of the intermediate results.
|
<B> Array<B> |
scanRight(F2<A,B,B> f,
B b)
Performs a right-fold accummulating and returns an array of the intermediate results.
|
Array<A> |
scanRight1(F<A,F<A,A>> f)
Performs a right-fold accummulating using last array element as a starting value
and returns an array of the intermediate results.
|
Array<A> |
scanRight1(F2<A,A,A> f)
Performs a right-fold accummulating using last array element as a starting value
and returns an array of the intermediate results.
|
<B> Array<B> |
sequence(Array<B> bs)
Performs a bind across each array element, but ignores the element value each time.
|
Unit |
set(int index,
A a)
Sets the element at the given index to the given value.
|
static <A> Array<A> |
single(A a)
Constructs a singleton array.
|
java.util.Collection<A> |
toCollection()
Projects an immutable collection of this array.
|
<X> Either<X,A> |
toEither(F0<X> x)
Returns an either projection of this array; the given argument in
Left if empty,
or the first element in Right . |
A[] |
toJavaArray()
Deprecated.
As of release 4.6, use
array(Class) . |
java.util.ArrayList<A> |
toJavaList()
Returns a java.util.ArrayList projection of this array.
|
List<A> |
toList()
Returns a list projection of this array.
|
Option<A> |
toOption()
Returns an option projection of this array;
None if empty, or the first element in
Some . |
Stream<A> |
toStream()
Returns a stream projection of this array.
|
java.lang.String |
toString() |
static <A,B> P2<Array<A>,Array<B>> |
unzip(Array<P2<A,B>> xs)
Transforms an array of pairs into an array of first components and an array of second components.
|
static <A> F<A[],Array<A>> |
wrap()
First-class wrapper function for arrays.
|
<B> Array<P2<A,B>> |
zip(Array<B> bs)
Zips this array with the given array to produce an array of pairs.
|
Array<P2<A,java.lang.Integer>> |
zipIndex()
Zips this array with the index of its element as a pair.
|
<B,C> Array<C> |
zipWith(Array<B> bs,
F<A,F<B,C>> f)
Zips this array with the given array using the given function to produce a new array.
|
<B,C> Array<C> |
zipWith(Array<B> bs,
F2<A,B,C> f)
Zips this array with the given array using the given function to produce a new array.
|
public java.util.Iterator<A> iterator()
for
-each loop.iterator
in interface java.lang.Iterable<A>
public A get(int index)
index
- The index at which to get the element to return.public int hashCode()
hashCode
in class java.lang.Object
public Unit set(int index, A a)
index
- The index at which to set the given value.a
- The value to set at the given index.public int length()
public Array.ImmutableProjection<A> immutable()
public boolean isEmpty()
true
is this array is empty, false
otherwise.true
is this array is empty, false
otherwise.public boolean isNotEmpty()
false
is this array is empty, true
otherwise.false
is this array is empty, true
otherwise.public A[] array(java.lang.Class<A[]> c)
c
- A class for the returned array.public java.lang.Object[] array()
@Deprecated public A[] toJavaArray()
array(Class)
.public Option<A> toOption()
None
if empty, or the first element in
Some
.public <X> Either<X,A> toEither(F0<X> x)
Left
if empty,
or the first element in Right
.x
- The value to return in left if this array is empty.public List<A> toList()
public Stream<A> toStream()
public java.lang.String toString()
toString
in class java.lang.Object
public <B> Array<B> map(F<A,B> f)
f
- The function to map across this array.public Array<A> filter(F<A,java.lang.Boolean> f)
true
when the given function is applied to them.f
- The predicate function to filter on.public Unit foreach(F<A,Unit> f)
f
- The side-effect to perform for the given element.public void foreachDoEffect(Effect1<A> f)
f
- The side-effect to perform for the given element.public <B> B foldRight(F<A,F<B,B>> f, B b)
f
- The function to apply on each element of the array.b
- The beginning value to start the application from.public <B> B foldRight(F2<A,B,B> f, B b)
f
- The function to apply on each element of the array.b
- The beginning value to start the application from.public <B> B foldLeft(F<B,F<A,B>> f, B b)
f
- The function to apply on each element of the array.b
- The beginning value to start the application from.public <B> B foldLeft(F2<B,A,B> f, B b)
f
- The function to apply on each element of the array.b
- The beginning value to start the application from.public <B> Array<B> scanLeft(F<B,F<A,B>> f, B b)
f
- The function to apply on each argument pair (initial value/previous result and next array element)b
- The beginning value to start the application from.public <B> Array<B> scanLeft(F2<B,A,B> f, B b)
f
- The function to apply on each argument pair (initial value/previous result and next array element)b
- The beginning value to start the application from.public Array<A> scanLeft1(F<A,F<A,A>> f)
f
- The function to apply on each argument pair (next array element and first array element/previous result)public Array<A> scanLeft1(F2<A,A,A> f)
f
- The function to apply on each argument pair (next array element and first array element/previous result)public <B> Array<B> scanRight(F<A,F<B,B>> f, B b)
f
- The function to apply on each argument pair (previous array element and initial value/previous result)b
- The beginning value to start the application from.public <B> Array<B> scanRight(F2<A,B,B> f, B b)
f
- The function to apply on each argument pair (previous array element and initial value/previous result)b
- The beginning value to start the application from.public Array<A> scanRight1(F<A,F<A,A>> f)
f
- The function to apply on each argument pair (previous array element and last array element/previous result)public Array<A> scanRight1(F2<A,A,A> f)
f
- The function to apply on each argument pair (previous array element and last array element/previous result)public <B> Array<B> bind(F<A,Array<B>> f)
f
- The function to apply to each element of this array.public <B> Array<B> sequence(Array<B> bs)
bs
- The array to apply in the final join.public <B,C> Array<C> bind(Array<B> sb, F<A,F<B,C>> f)
sb
- A given array to bind the given function with.f
- The function to apply to each element of this array and the given array.public <B,C> Array<C> bind(Array<B> sb, F2<A,B,C> f)
sb
- A given array to bind the given function with.f
- The function to apply to each element of this array and the given array.public <B> Array<B> apply(Array<F<A,B>> lf)
lf
- The array of functions to apply.public Array<A> reverse()
public Array<A> append(Array<A> aas)
aas
- The array to append to this one.public static <A> Array<A> empty()
@SafeVarargs public static <A> Array<A> array(A... as)
as
- The elements to construct the array with.public static <A> Array<A> single(A a)
a
- The element to put in the array.public static <A> F<A[],Array<A>> wrap()
public static <A,B> F<F<A,B>,F<Array<A>,Array<B>>> map()
public static <A> Array<A> join(Array<Array<A>> o)
o
- The array of arrays to join.public static <A> F<Array<Array<A>>,Array<A>> join()
public boolean forall(F<A,java.lang.Boolean> f)
true
if the predicate holds for all of the elements of this array,
false
otherwise (true
for the empty array).f
- the predicate function to test on each element of this array.true
if the predicate holds for all of the elements of this array,
false
otherwise.public boolean exists(F<A,java.lang.Boolean> f)
true
if the predicate holds for at least one of the elements of this
array, false
otherwise (false
for the empty array).f
- the predicate function to test on the elements of this array.true
if the predicate holds for at least one of the elements of this
array.public boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public Option<A> find(F<A,java.lang.Boolean> f)
f
- The predicate function to test on elements of this array.public static Array<java.lang.Integer> range(int from, int to)
from
value (inclusive) to the given
to
value (exclusive).from
- The minimum value for the array (inclusive).to
- The maximum value for the array (exclusive).from
value (inclusive) to the given
to
value (exclusive).public <B,C> Array<C> zipWith(Array<B> bs, F<A,F<B,C>> f)
bs
- The array to zip this array with.f
- The function to zip this array and the given array with.public <B,C> Array<C> zipWith(Array<B> bs, F2<A,B,C> f)
bs
- The array to zip this array with.f
- The function to zip this array and the given array with.public <B> Array<P2<A,B>> zip(Array<B> bs)
bs
- The array to zip this array with.public Array<P2<A,java.lang.Integer>> zipIndex()
public java.util.Collection<A> toCollection()
public java.util.List<A> asJavaList()
public java.util.ArrayList<A> toJavaList()
public static <A> Array<A> iterableArray(java.lang.Iterable<A> i)
i
- The iterable to take to an array.public static <A> Array<A> iteratorArray(java.util.Iterator<A> i)
@SafeVarargs public static <A> Array<A> arrayArray(A... as)
public static <A,B> P2<Array<A>,Array<B>> unzip(Array<P2<A,B>> xs)
xs
- The array of pairs to transform.public static <T,U> T[] copyOf(U[] a, int len, java.lang.Class<? extends T[]> newType)
public static <T> T[] copyOf(T[] a, int len)
public static char[] copyOfRange(char[] a, int from, int to)