2.4 KiB
2.4 KiB
Iterable interface
Iterable is a class that provides function that creates the iterator:
class Iterable {
abstract fun iterator()
}
Note that each call of iterator()
must provide an independent iterator.
Iterator itself is a simple interface that should provide only to method:
class Iterator {
abstract fun hasNext(): Bool
fun next(): Obj
}
Just remember at this stage typed declarations are not yet supported.
Having Iterable
in base classes allows to use it in for loop. Also, each Iterable
has some utility functions available:
Instance methods
fun/method | description |
---|---|
toList() | create a list from iterable |
toSet() | create a set from iterable |
contains(i) | check that iterable contains i |
i in iterator |
same as contains(i) |
isEmpty() | check iterable is empty |
forEach(f) | call f for each element |
toMap() | create a map from list of key-value pairs (arrays of 2 items or like) |
map(f) | create a list of values returned by f called for each element of the iterable |
indexOf(i) | return index if the first encounter of i or a negative value if not found |
associateBy(kf) | create a map where keys are returned by kf that will be called for each element |
fun Iterable.toList(): List
fun Iterable.toSet(): Set
fun Iterable.indexOf(element): Int
fun Iterable.contains(element): Bool
fun Iterable.isEmpty(element): Bool
fun Iterable.forEach(block: (Any?)->Void ): Void
fun Iterable.map(block: (Any?)->Void ): List
fun Iterable.associateBy( keyMaker: (Any?)->Any): Map
Abstract methods
fun iterator(): Iterator
Creates a list by iterating to the end. So, the Iterator should be finite to be used with it.
Included in interfaces:
- [Collection], Array, List