Class LazyIterate
java.lang.Object
org.eclipse.collections.impl.utility.LazyIterate
public final class LazyIterate extends Object
LazyIterate is a factory class which creates "deferred" iterables around the specified iterables. A "deferred"
iterable performs some operation, such as filtering or transforming, when the result iterable is iterated over. This
makes the operation very memory efficient, because you don't have to create intermediate collections during the
operation.
- Since:
- 1.0
-
Method Summary
Modifier and Type Method Description static <T> LazyIterable<T>
adapt(Iterable<T> iterable)
Creates a deferred rich iterable for the specified iterable.static <A, B> LazyIterable<Pair<A,B>>
cartesianProduct(Iterable<A> iterable1, Iterable<B> iterable2)
Create a deferred cartesian product of the two specified iterables.static <A, B, C> LazyIterable<C>
cartesianProduct(Iterable<A> iterable1, Iterable<B> iterable2, Function2<? super A,? super B,? extends C> function)
Create a deferred cartesian product of the two specified iterables.static <T> LazyIterable<RichIterable<T>>
chunk(Iterable<T> iterable, int size)
static <T, V> LazyIterable<V>
collect(Iterable<T> iterable, Function<? super T,? extends V> function)
Creates a deferred transforming iterable for the specified iterable.static <T, V> LazyIterable<V>
collectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,? extends V> function)
Creates a deferred filtering and transforming iterable for the specified iterable.static <T> LazyIterable<T>
concatenate(Iterable<T>... iterables)
Combines iterables into a deferred composite iterable.static <T> LazyIterable<T>
distinct(Iterable<T> iterable)
Creates a deferred distinct iterable for the specified iterable.static <T> LazyIterable<T>
drop(Iterable<T> iterable, int count)
Creates a deferred drop iterable for the specified iterable using the specified count as the size to drop.static <T> LazyIterable<T>
dropWhile(Iterable<T> iterable, Predicate<? super T> predicate)
Creates a deferred dropWhile iterable for the specified iterable using the specified count as the size to drop.static <T> LazyIterable<T>
empty()
static <T, V> LazyIterable<V>
flatCollect(Iterable<T> iterable, Function<? super T,? extends Iterable<V>> function)
Creates a deferred flattening iterable for the specified iterable.static <T> LazyIterable<T>
reject(Iterable<T> iterable, Predicate<? super T> predicate)
Creates a deferred negative filtering iterable for the specified iterable.static <T> LazyIterable<T>
select(Iterable<T> iterable, Predicate<? super T> predicate)
Creates a deferred filtering iterable for the specified iterable.static <T> LazyIterable<T>
selectInstancesOf(Iterable<?> iterable, Class<T> clazz)
static <T> LazyIterable<T>
take(Iterable<T> iterable, int count)
Creates a deferred take iterable for the specified iterable using the specified count as the limit.static <T> LazyIterable<T>
takeWhile(Iterable<T> iterable, Predicate<? super T> predicate)
Creates a deferred takeWhile iterable for the specified iterable using the specified predicate.static <T> LazyIterable<T>
tap(Iterable<T> iterable, Procedure<? super T> procedure)
Creates a deferred tap iterable for the specified iterable.static <A, B> LazyIterable<Pair<A,B>>
zip(Iterable<A> as, Iterable<B> bs)
static <T> LazyIterable<Pair<T,Integer>>
zipWithIndex(Iterable<T> iterable)
-
Method Details
-
adapt
Creates a deferred rich iterable for the specified iterable. -
select
Creates a deferred filtering iterable for the specified iterable. -
reject
Creates a deferred negative filtering iterable for the specified iterable. -
selectInstancesOf
-
collect
public static <T, V> LazyIterable<V> collect(Iterable<T> iterable, Function<? super T,? extends V> function)Creates a deferred transforming iterable for the specified iterable. -
flatCollect
public static <T, V> LazyIterable<V> flatCollect(Iterable<T> iterable, Function<? super T,? extends Iterable<V>> function)Creates a deferred flattening iterable for the specified iterable. -
collectIf
public static <T, V> LazyIterable<V> collectIf(Iterable<T> iterable, Predicate<? super T> predicate, Function<? super T,? extends V> function)Creates a deferred filtering and transforming iterable for the specified iterable. -
take
Creates a deferred take iterable for the specified iterable using the specified count as the limit. -
drop
Creates a deferred drop iterable for the specified iterable using the specified count as the size to drop. -
takeWhile
Creates a deferred takeWhile iterable for the specified iterable using the specified predicate. Short circuits at the first element which does not satisfy the Predicate.- Since:
- 8.0
-
dropWhile
Creates a deferred dropWhile iterable for the specified iterable using the specified count as the size to drop. Short circuits at the first element which satisfies the Predicate.- Since:
- 8.0
-
distinct
Creates a deferred distinct iterable for the specified iterable.- Since:
- 5.0
-
concatenate
Combines iterables into a deferred composite iterable. -
empty
-
zip
-
zipWithIndex
-
chunk
-
tap
Creates a deferred tap iterable for the specified iterable.- Since:
- 6.0
-
cartesianProduct
public static <A, B> LazyIterable<Pair<A,B>> cartesianProduct(Iterable<A> iterable1, Iterable<B> iterable2)Create a deferred cartesian product of the two specified iterables. SeecartesianProduct(Iterable, Iterable, Function2)
about performance and presence of duplicates.- Since:
- 10.0
-
cartesianProduct
public static <A, B, C> LazyIterable<C> cartesianProduct(Iterable<A> iterable1, Iterable<B> iterable2, Function2<? super A,? super B,? extends C> function)Create a deferred cartesian product of the two specified iterables. This operation has O(n^2) performance. The presence of duplicates in the resulting iterable is both dependent on the presence of duplicates in the two specified iterables, and on the behaviour of the terminating operation that is applied to the resulting lazy iterable.- Since:
- 10.0
-