public abstract class Linq4j extends Object
Modifier and Type | Field and Description |
---|---|
static QueryProvider |
DEFAULT_PROVIDER
Query provider that simply executes a
Queryable by calling its
enumerator method; does not attempt optimization. |
static Enumerable<?> |
EMPTY_ENUMERABLE |
Modifier and Type | Method and Description |
---|---|
static <T> Enumerable<T> |
asEnumerable(Collection<T> collection)
Adapter that converts an
Collection into an Enumerable . |
static <T> Enumerable<T> |
asEnumerable(Iterable<T> iterable)
Adapter that converts an
Iterable into an Enumerable . |
static <T> Enumerable<T> |
asEnumerable(List<T> list)
Adapter that converts an
List into an Enumerable . |
static <T> Enumerable<T> |
asEnumerable(T[] ts)
Adapter that converts an array into an enumerable.
|
static <TSource,TResult> |
cast(Iterable<TSource> source,
Class<TResult> clazz)
Converts the elements of a given Iterable to the specified type.
|
static <E> Enumerable<E> |
concat(List<Enumerable<E>> enumerableList)
Concatenates two or more
Enumerable s to form a composite
enumerable that contains the union of their elements. |
static <T> Enumerable<T> |
emptyEnumerable()
Returns an
Enumerable that has no elements. |
static <T> Enumerator<T> |
emptyEnumerator()
Returns an
Enumerator that has no elements. |
static <V> Enumerator<V> |
enumerator(Collection<V> values)
Adapter that converts a collection into an enumerator.
|
static <T> Iterator<T> |
enumeratorIterator(Enumerator<T> enumerator)
Adapter that converts an enumerator into an iterator.
|
static <T> boolean |
equals(T t0,
T t1)
Returns whether the arguments are equal to each other.
|
static <T> Enumerator<T> |
iterableEnumerator(Iterable<T> iterable)
Adapter that converts an iterable into an enumerator.
|
static <TSource,TResult> |
ofType(Iterable<TSource> source,
Class<TResult> clazz)
Returns elements of a given
Iterable that are of the specified
type. |
static <T> Enumerator<List<T>> |
product(List<Enumerator<T>> enumerators)
Returns an enumerator that is the cartesian product of the given
enumerators.
|
static <T> T |
requireNonNull(T o)
Throws
NullPointerException if argument is null, otherwise
returns argument. |
static <T> Enumerable<T> |
singletonEnumerable(T element)
Returns an
Enumerable that has one element. |
static <T> Enumerator<T> |
singletonEnumerator(T element)
Returns an
Enumerator that has one element. |
static <T> Enumerator<T> |
singletonNullEnumerator()
Returns an
Enumerator that has one null element. |
public static final QueryProvider DEFAULT_PROVIDER
Queryable
by calling its
enumerator method; does not attempt optimization.public static final Enumerable<?> EMPTY_ENUMERABLE
public static <T> Iterator<T> enumeratorIterator(Enumerator<T> enumerator)
WARNING: The iterator returned by this method does not call
Enumerator.close()
, so it is not safe to use
with an enumerator that allocates resources.
T
- Element typeenumerator
- Enumeratorpublic static <T> Enumerator<T> iterableEnumerator(Iterable<T> iterable)
T
- Element typeiterable
- Iterablepublic static <T> Enumerable<T> asEnumerable(List<T> list)
List
into an Enumerable
.T
- Element typelist
- Listpublic static <T> Enumerable<T> asEnumerable(Collection<T> collection)
Collection
into an Enumerable
.
It uses more efficient implementations if the iterable happens to
be a List
.
T
- Element typecollection
- Collectionpublic static <T> Enumerable<T> asEnumerable(Iterable<T> iterable)
Iterable
into an Enumerable
.
It uses more efficient implementations if the iterable happens to
be a Collection
or a List
.
T
- Element typeiterable
- Iterablepublic static <T> Enumerable<T> asEnumerable(T[] ts)
T
- Element typets
- Arraypublic static <V> Enumerator<V> enumerator(Collection<V> values)
V
- Element typevalues
- Collectionpublic static <TSource,TResult> Enumerable<TResult> cast(Iterable<TSource> source, Class<TResult> clazz)
This method is implemented by using deferred execution. The immediate
return value is an object that stores all the information that is
required to perform the action. The query represented by this method is
not executed until the object is enumerated either by calling its
RawEnumerable.enumerator()
method directly or by using
for (... in ...)
.
Since standard Java Collection
objects implement the
Iterable
interface, the cast
method enables the standard
query operators to be invoked on collections
(including List
and Set
) by supplying
the necessary type information. For example, ArrayList
does not
implement Enumerable
<T>, but you can invoke
Linq4j.cast(list, Integer.class)
to convert the list of an enumerable that can be queried using the
standard query operators.
If an element cannot be cast to type <TResult>, this method will
throw a ClassCastException
. To obtain only those elements that
can be cast to type TResult, use the ofType(java.lang.Iterable<TSource>, java.lang.Class<TResult>)
method instead.
public static <TSource,TResult> Enumerable<TResult> ofType(Iterable<TSource> source, Class<TResult> clazz)
Iterable
that are of the specified
type.
This method is implemented by using deferred execution. The immediate
return value is an object that stores all the information that is
required to perform the action. The query represented by this method is
not executed until the object is enumerated either by calling its
RawEnumerable.enumerator()
method directly or by using
for (... in ...)
.
The ofType
method returns only those elements in source that
can be cast to type TResult. To instead receive an exception if an
element cannot be cast to type TResult, use
cast(Iterable, Class)
.
Since standard Java Collection
objects implement the
Iterable
interface, the cast
method enables the standard
query operators to be invoked on collections
(including List
and Set
) by supplying
the necessary type information. For example, ArrayList
does not
implement Enumerable
<T>, but you can invoke
Linq4j.ofType(list, Integer.class)
to convert the list of an enumerable that can be queried using the
standard query operators.public static <T> Enumerable<T> singletonEnumerable(T element)
Enumerable
that has one element.T
- Element typepublic static <T> Enumerator<T> singletonEnumerator(T element)
Enumerator
that has one element.T
- Element typepublic static <T> Enumerator<T> singletonNullEnumerator()
Enumerator
that has one null element.T
- Element typepublic static <T> Enumerable<T> emptyEnumerable()
Enumerable
that has no elements.T
- Element typepublic static <T> Enumerator<T> emptyEnumerator()
Enumerator
that has no elements.T
- Element typepublic static <E> Enumerable<E> concat(List<Enumerable<E>> enumerableList)
Enumerable
s to form a composite
enumerable that contains the union of their elements.E
- Element typeenumerableList
- List of enumerable objectspublic static <T> Enumerator<List<T>> product(List<Enumerator<T>> enumerators)
For example, given enumerator A that returns {"a", "b", "c"} and enumerator B that returns {"x", "y"}, product(List(A, B)) will return {List("a", "x"), List("a", "y"), List("b", "x"), List("b", "y"), List("c", "x"), List("c", "y")}.
Notice that the cardinality of the result is the product of the cardinality of the inputs. The enumerators A and B have 3 and 2 elements respectively, and the result has 3 * 2 = 6 elements. This is always the case. In particular, if any of the enumerators is empty, the result is empty.
T
- Element typeenumerators
- List of enumeratorspublic static <T> boolean equals(T t0, T t1)
Equivalent to Objects#equals
in JDK 1.7 and above.
public static <T> T requireNonNull(T o)
NullPointerException
if argument is null, otherwise
returns argument.
Equivalent to Objects#equireNonNull
in JDK 1.7 and above.
Copyright © 2012-2014 Julian Hyde. All Rights Reserved.