|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface SizedIterable<T>
Allows size calculations on Iterables. Implementing classes must be able to calculate their size;
ideally, this calculation should be done in constant time. IterUtil.sizeOf(java.lang.Iterable>) uses this interface to
optimize size calculations.
In an ideal design, java.util.Collection would implement a SizedIterable
API class, and applications that required this behavior could be defined in terms of
SizedIterables instead of Iterables. However, since the Java APIs can't be
modified and are too valuable to abandon, the sizeOf method provides a workaround that,
through casting, calculates the size appropriately. An alternative design would allow
collections as components of SizedIterables such as ComposedIterable only by manually
wrapping them in a bridge class (see IterUtil.asSizedIterable(java.util.Collection).
| Method Summary | |
|---|---|
boolean |
hasFixedSize()
true if this iterable is known to have a fixed size. |
boolean |
isEmpty()
Whether the iterable does not contain any elements. |
boolean |
isInfinite()
true if the iterable is known to have infinite size. |
boolean |
isStatic()
true if this iterable is unchanging. |
int |
size()
Compute the number of elements in the iterable. |
int |
size(int bound)
Compute the number of elements in the iterable, up to the given bound. |
| Methods inherited from interface java.lang.Iterable |
|---|
iterator |
| Method Detail |
|---|
boolean isEmpty()
int size()
int, Integer.MAX_VALUE should be returned. Otherwise, next() may be safely invoked
on the iterator exactly this number of times.
int size(int bound)
bound, bound is returned.
bound - Maximum result. Assumed to be nonnegative.boolean isInfinite()
true if the iterable is known to have infinite size. If true, an iterator over the iterable in its
current state will never return false from hasNext().
boolean hasFixedSize()
true if this iterable is known to have a fixed size. This is the case if the iterable is immutable,
or if changes can only replace values, not remove or add them. An infinite iterable may be fixed if it
is guaranteed to never become finite.
boolean isStatic()
true if this iterable is unchanging. This implies that hasFixedSize() is true, and that
iterator() will always return the same (either == or equal() and immutable) elements
in the same order. ("Immutable" here means that equals() invocations are consistent over time -- if
two objects are equal, they will never become inequal, and vice versa.)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||