Интерфейс Iterable. Интерфейс требует, чтобы каждый класс, который его реализует реализовывал
метод – итератор. Интерфейс
Collection
расширяет интерфейс
Iterable
, таким
образом, что все классы, которые реализуют интерфейс
List
(подинтерфейс
Collection
) обязаны представить реализацию итератора в виде метода.
public interface Iterable {
public Iterator iterator();
}
Удобно использовать для своих собственных классов коллекций использовать
цикл
for/in
. Чтобы сделать это, ваш класс должен реализовывать интерфейс
java.lang.Iterable . Простой пример:
public class MyCollection implements Iterable{
public Iterator iterator() {
return new MyIterator();
}
}
Соответствующая реализация скелета класса MyIterator:
public class MyIterator implements Iterator {
public boolean hasNext() {
//
реализация
.
}
public T next() {
133
//
реализация
...;
}
public void remove() {
//
реализация
...
если
поддерживается
.
}}
public static void main(String[] args) {
MyCollection stringCollection = new
MyCollection();
for(String string : stringCollection){
}
}
7.5 Иерархия классов Collection. Как
ArrayList
, так и
LinkedList
представляют собой коллекцию
объектов, на которые можно ссылаться с помощью индекса. Интерфейс
Collection
определяет подмножество методов, указанных в интерфейсе
List
. Иерархия
Collection представлена на рисунке 7.13.
Рисунок 7.13 – Иерархия Collection
Общие характеристики коллекций
Интерфейс
Collection
определяет набор общих методов. Основные
функции включают в себя:
134
-
коллекции растут по мере необходимости;
-
коллекции хранят ссылки на объекты;
-
коллекции имеют по крайней мере два конструктора.
Реализации интерфейса Queue
PriorityQueue
(рисунок 7.14) - единственная прямая реализация
интерфейса
Queue
(не считая
LinkedList
, который больше является списком, чем
очередью). Эта очередь упорядочивает элементы либо по их натуральному порядку
(используя интерфейс
Comparable
), либо с помощью интерфейса
Comparator
,
полученному в конструкторе.
Рисунок 7.14 – Реализации интерфейса Queue