@GwtCompatible(emulated=true) public abstract class FluentIterable<E> extends Objectimplements Iterable <E>
FluentIterable provides a rich interface for manipulating
Iterable instances in a chained fashion. A
FluentIterable can be created from an
Iterable, or from a set of elements. The following types of methods are provided on
FluentIterable:
FluentIterable based in some way on the contents of the current one (for example transform(com.google.common.base.Function<? super E, T>)) FluentIterable's contents into a new collection or array (for example toList()) last()) FluentIterable's contents (for example anyMatch(com.google.common.base.Predicate<? super E>)) Here is an example that merges the lists returned by two separate database calls, transforms it by invoking toString() on each element, and returns the first 10 elements as an ImmutableList:
FluentIterable .from(database.getClientList()) .filter(activeInLastMonth()) .transform(Functions.toStringFunction()) .limit(10) .toList();
Anything which can be done using FluentIterable could be done in a different fashion (often with Iterables), however the use of FluentIterable makes many sets of operations significantly more concise.
| Modifier | Constructor and Description |
|---|---|
protected |
FluentIterable()
Constructor for use by subclasses.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
allMatch(Predicate
Returns
true if every element in this fluent iterable satisfies the predicate.
|
boolean |
anyMatch(Predicate
Returns
true if any element in this fluent iterable satisfies the predicate.
|
FluentIterable |
append(E... elements)
Returns a fluent iterable whose iterators traverse first the elements of this fluent iterable, followed by
elements.
|
FluentIterable |
append(Iterable
Returns a fluent iterable whose iterators traverse first the elements of this fluent iterable, followed by those of
other.
|
boolean |
contains(Object
Returns
true if this fluent iterable contains any object for which
equals(element) is true.
|
<C extends Collection |
copyInto(C collection)
Copies all the elements from this fluent iterable to
collection.
|
FluentIterable |
cycle()
Returns a fluent iterable whose
Iterator cycles indefinitely over the elements of this fluent iterable.
|
<T> FluentIterable |
filter(Class
Returns the elements from this fluent iterable that are instances of class
type.
|
FluentIterable |
filter(Predicate
Returns the elements from this fluent iterable that satisfy a predicate.
|
Optional |
first()
Returns an
Optional containing the first element in this fluent iterable.
|
Optional |
firstMatch(Predicate
Returns an
Optional containing the first element in this fluent iterable that satisfies the given predicate, if such an element exists.
|
static <E> FluentIterable |
from(FluentIterable
Deprecated.
instances of
FluentIterable don't need to be converted to FluentIterable
|
static <E> FluentIterable |
from(Iterable
Returns a fluent iterable that wraps
iterable, or
iterable itself if it is already a
FluentIterable.
|
E |
get(int position)
Returns the element at the specified position in this fluent iterable.
|
<K> ImmutableListMultimap |
index(Function
Creates an index
ImmutableListMultimap that contains the results of applying a specified function to each item in this
FluentIterable of values.
|
boolean |
isEmpty()
Determines whether this fluent iterable is empty.
|
String |
join(Joiner
Returns a
String containing all of the elements of this fluent iterable joined with
joiner.
|
Optional |
last()
Returns an
Optional containing the last element in this fluent iterable.
|
FluentIterable |
limit(int size)
Creates a fluent iterable with the first
size elements of this fluent iterable.
|
static <E> FluentIterable |
of(E[] elements)
Returns a fluent iterable containing
elements in the specified order.
|
int |
size()
Returns the number of elements in this fluent iterable.
|
FluentIterable |
skip(int numberToSkip)
Returns a view of this fluent iterable that skips its first
numberToSkip elements.
|
E[] |
toArray(Class
Returns an array containing all of the elements from this fluent iterable in iteration order.
|
ImmutableList |
toList()
Returns an
ImmutableList containing all of the elements from this fluent iterable in proper sequence.
|
<V> ImmutableMap |
toMap(Function
Returns an immutable map for which the elements of this
FluentIterable are the keys in the same order, mapped to values by the given function.
|
ImmutableSet |
toSet()
Returns an
ImmutableSet containing all of the elements from this fluent iterable with duplicates removed.
|
ImmutableList |
toSortedList(Comparator
Returns an
ImmutableList containing all of the elements from this
FluentIterable in the order specified by
comparator.
|
ImmutableSortedSet |
toSortedSet(Comparator
Returns an
ImmutableSortedSet containing all of the elements from this
FluentIterable in the order specified by
comparator, with duplicates (determined by
comparator.compare(x, y) == 0) removed.
|
String |
toString()
Returns a string representation of this fluent iterable, with the format
[e1, e2, ..., en].
|
<T> FluentIterable |
transform(Function
Returns a fluent iterable that applies
function to each element of this fluent iterable.
|
<T> FluentIterable |
transformAndConcat(Function
Applies
function to each element of this fluent iterable and returns a fluent iterable with the concatenated combination of results.
|
<K> ImmutableMap |
uniqueIndex(Function
Returns an immutable map for which the
Map are the elements of this
FluentIterable in the given order, and each key is the product of invoking a supplied function on its corresponding value.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitforEach, iterator, spliteratorpublic static <E> FluentIterable<E> from(Iterable <E> iterable)
iterable, or
iterable itself if it is already a
FluentIterable.
@Deprecated public static <E> FluentIterable<E> from(FluentIterable <E> iterable)
FluentIterable don't need to be converted to FluentIterable
Iterable to
FluentIterable has obviated the need to explicitly convert to a
FluentIterable.
@Beta public static <E> FluentIterable<E> of(E[] elements)
elements in the specified order.
public StringtoString()
[e1, e2, ..., en].
public final int size()
public final boolean contains(Objectelement)
true if this fluent iterable contains any object for which
equals(element) is true.
public final FluentIterable<E> cycle()
Iterator cycles indefinitely over the elements of this fluent iterable.
That iterator supports remove() if iterable.iterator() does. After remove() is called, subsequent cycles omit the removed element, which is no longer in this fluent iterable. The iterator's hasNext() method returns true until this fluent iterable is empty.
Warning: Typical uses of the resulting iterator may produce an infinite loop. You should use an explicit break or be certain that you will eventually remove all the elements.
@Beta public final FluentIterable<E> append(Iterable <? extends E> other)
other. The iterators are not polled until necessary.
The returned iterable's Iterator supports remove() when the corresponding Iterator supports it.
@Beta public final FluentIterable<E> append(E... elements)
elements.
public final FluentIterable<E> filter(Predicate <? super E> predicate)
remove().
@GwtIncompatible(value="Class.isInstance") public final <T> FluentIterable<T> filter(Class <T> type)
type.
type - the type of elements desired
public final boolean anyMatch(Predicate<? super E> predicate)
true if any element in this fluent iterable satisfies the predicate.
public final boolean allMatch(Predicate<? super E> predicate)
true if every element in this fluent iterable satisfies the predicate. If this fluent iterable is empty,
true is returned.
public final Optional<E> firstMatch(Predicate <? super E> predicate)
Optional containing the first element in this fluent iterable that satisfies the given predicate, if such an element exists.
Warning: avoid using a predicate that matches null. If null is matched in this fluent iterable, a NullPointerException will be thrown.
public final <T> FluentIterable<T> transform(Function <? super E ,T> function)
function to each element of this fluent iterable.
The returned fluent iterable's iterator supports remove() if this iterable's iterator does. After a successful remove() call, this fluent iterable no longer contains the corresponding element.
public <T> FluentIterable<T> transformAndConcat(Function <? super E ,? extends Iterable <? extends T>> function)
function to each element of this fluent iterable and returns a fluent iterable with the concatenated combination of results.
function returns an Iterable of results.
The returned fluent iterable's iterator supports remove() if this function-returned iterables' iterator does. After a successful remove() call, the returned fluent iterable no longer contains the corresponding element.
Function<E, Iterable<T>> until 14.0)
public final Optional<E> first()
Optional containing the first element in this fluent iterable. If the iterable is empty,
Optional.absent() is returned.
NullPointerException - if the first element is null; if this is a possibility, use
iterator().next() or
Iterables.getFirst(java.lang.Iterable<? extends T>, T) instead.
public final Optional<E> last()
Optional containing the last element in this fluent iterable. If the iterable is empty,
Optional.absent() is returned.
NullPointerException - if the last element is null; if this is a possibility, use
Iterables.getLast(java.lang.Iterable<T>) instead.
public final FluentIterable<E> skip(int numberToSkip)
numberToSkip elements. If this fluent iterable contains fewer than
numberToSkip elements, the returned fluent iterable skips all of its elements.
Modifications to this fluent iterable before a call to iterator() are reflected in the returned fluent iterable. That is, the its iterator skips the first numberToSkip elements that exist when the iterator is created, not when skip() is called.
The returned fluent iterable's iterator supports remove() if the Iterator of this fluent iterable supports it. Note that it is not possible to delete the last skipped element by immediately calling remove() on the returned fluent iterable's iterator, as the Iterator contract states that a call to * remove() before a call to next() will throw an IllegalStateException.
public final FluentIterable<E> limit(int size)
size elements of this fluent iterable. If this fluent iterable does not contain that many elements, the returned fluent iterable will have the same behavior as this fluent iterable. The returned fluent iterable's iterator supports
remove() if this fluent iterable's iterator does.
size - the maximum number of elements in the returned fluent iterable
IllegalArgumentException - if
size is negative
public final boolean isEmpty()
public final ImmutableList<E> toList()
ImmutableList containing all of the elements from this fluent iterable in proper sequence.
toImmutableList()).
public final ImmutableList<E> toSortedList(Comparator <? super E> comparator)
ImmutableList containing all of the elements from this
FluentIterable in the order specified by
comparator. To produce an
ImmutableList sorted by its natural ordering, use
toSortedList(Ordering.natural()).
comparator - the function by which to sort list elements
NullPointerException - if any element is null
toSortedImmutableList()).
public final ImmutableSet<E> toSet()
ImmutableSet containing all of the elements from this fluent iterable with duplicates removed.
toImmutableSet()).
public final ImmutableSortedSet<E> toSortedSet(Comparator <? super E> comparator)
ImmutableSortedSet containing all of the elements from this
FluentIterable in the order specified by
comparator, with duplicates (determined by
comparator.compare(x, y) == 0) removed. To produce an
ImmutableSortedSet sorted by its natural ordering, use
toSortedSet(Ordering.natural()).
comparator - the function by which to sort set elements
NullPointerException - if any element is null
toImmutableSortedSet()).
public final <V> ImmutableMap<E ,V> toMap(Function <? super E ,V> valueFunction)
FluentIterable are the keys in the same order, mapped to values by the given function. If this iterable contains duplicate elements, the returned map will contain each distinct element once in the order it first appears.
NullPointerException - if any element of this iterable is
null, or if
valueFunction produces
null for any key
public final <K> ImmutableListMultimap<K ,E> index(Function <? super E ,K> keyFunction)
ImmutableListMultimap that contains the results of applying a specified function to each item in this
FluentIterable of values. Each element of this iterable will be stored as a value in the resulting multimap, yielding a multimap with the same size as this iterable. The key used to store that value in the multimap will be the result of calling the function on that value. The resulting multimap is created as an immutable snapshot. In the returned multimap, keys appear in the order they are first encountered, and the values corresponding to each key appear in the same order as they are encountered.
keyFunction - the function used to produce the key for each value
NullPointerException - if any of the following cases is true:
keyFunction is null keyFunction returns null for any element of this iterable public final <K> ImmutableMap<K ,E> uniqueIndex(Function <? super E ,K> keyFunction)
Map.values() are the elements of this
FluentIterable in the given order, and each key is the product of invoking a supplied function on its corresponding value.
keyFunction - the function used to produce the key for each value
IllegalArgumentException - if
keyFunction produces the same key for more than one value in this fluent iterable
NullPointerException - if any element of this fluent iterable is null, or if
keyFunction produces
null for any value
@GwtIncompatible(value="Array.newArray(Class, int)") public final E[] toArray(Class<E> type)
type - the type of the elements
public final <C extends Collection<? super E>> C copyInto(C collection)
collection. This is equivalent to calling
Iterables.addAll(collection, this).
collection - the collection to copy elements to
collection, for convenience
@Beta public final Stringjoin(Joiner joiner)
String containing all of the elements of this fluent iterable joined with
joiner.
public final E get(int position)
position - position of the element to return
IndexOutOfBoundsException - if
position is negative or greater than or equal to the size of this fluent iterable