Центрдистанционногообучения
Для чего нужен Iterable?
•Для обеспечения возможности работы ваших классов или
объектов в выражении for/in необходимо реализовать интерфейс Iterable.
•Есть два основных сценария:
üРасширить существующий класс коллекции, который уже реализует интерфейс Iterable (и, следовательно, уже поддерживает for/in).
üУправлять итерацией вручную, определив свою собственную реализацию Iterable.
online.mirea.ru
Центрдистанционногообучения
• Интерфейстребует, чтобыIterableкаждый класс, который его реализует реализовывал метод – итератор
•Интерфейс Collection расширяет интерфейс Iterable, таким образом, что все классы, которые реализуют интерфейс List (подинтерфейс Collection) обязаны представить реализацию итератора в виде метода
•
public interface Iterable<T> { public Iterator<T> iterator();
}
online.mirea.ru
Центрдистанционногообучения
УдобноИнтерфейсиспользовать дляIterableсвоих собственных классов коллекций использовать цикл for/in.
Чтобы сделать это, ваш класс должен реализовывать интерфейс java.lang.Iterable <E>.
Простой пример:
public class MyCollection<E> implements Iterable<E>{
public Iterator<E> iterator() { return new MyIterator<E>();
}
}
online.mirea.ru
Центрдистанционногообучения
Интерфейс Iterable
Соответствующая реализация скелета класса MyIterator:
public class MyIterator <T> implements Iterator<T> { public boolean hasNext() {
//реализация.
}
public T next() { //реализация...;
}
public void remove() { //реализация...если поддерживается.
public}} static void main(String[] args) {
MyCollection<String> stringCollection = new MyCollection<String>();
for(String string : stringCollection){ |
|
} |
online.mirea.ru |
}
Центрдистанционногообучения
Реализация двусвязного списка
mirea.ru