Итератор в Java - PullRequest
       15

Итератор в Java

2 голосов
/ 22 мая 2010

Что такое Итератор и коллекции? Есть ли у этих двоих какие-либо отношения?

// the interface definition
Interface Iterator {
    boolean hasNext();
    Object next(); // note "one-way" traffic
    void remove();
}

// an example
public static void main (String[] args){
    ArrayList cars = new ArrayList();

    for (int i = 0; i < 12; i++)
        cars.add (new Car());

    Iterator it = cats.iterator();

    while (it.hasNext())
        System.out.println ((Car)it.next());
}

Имеется ли в Interface Iterator только эти имена методов, предопределенные или определенные пользователем? Что на самом деле говорят эти четыре строки ниже?

cars.add (new Car());
Iterator it = cats.iterator();
while (it.hasNext())
    System.out.println ((Car)it.next());

Спасибо. Я собираю книгу в коллекциях.

Ответы [ 3 ]

5 голосов
/ 23 мая 2010

Коллекции Java, как следует из названия, являются коллекциями вещей.Если вы не знаете это слово, найдите его в словаре.

Существует много типов коллекций.Возьмем, к примеру, математическую концепцию множества.Вы можете поместить произвольные вещи в набор, но он никогда не будет содержать одну и ту же вещь более одного раза.Вещи в наборе не упорядочены, то есть нельзя сказать, что A предшествует B .Другой тип коллекции - список.Список может содержать одну и ту же вещь более одного раза, и порядок вещей в списке важен.

Общим для всех этих коллекций является то, что они содержат вещи, которые в Java называются элементы .Когда вы хотите узнать, какие вещи находятся в определенной коллекции, вы перебираете коллекцию, что является еще одним термином для , проходящего через все элементы.Это то, что делает Iterator.Он в основном начинается в начале коллекции, вы всегда можете спросить, есть ли следующий элемент (hasNext()), и, если он есть, вы можете получить доступ к этому элементу (next()), пока не выполните итерацию по всем элементам.элементы в коллекции.

1 голос
/ 23 мая 2010

Итератор чаще всего используется в качестве механизма для просмотра элементов коллекции.

Эта концепция вообще не относится к Java, хотя конкретное определение интерфейса, которое вы показываете:

См. Статью в Википедии об итераторе , где обсуждается, что это значит и как это делается на разных языках, включая Java.

В Java это интерфейс, так что вы действительно можете реализовать свои собственные, но разумные из них определены для коллекций в библиотеке коллекций Java и для любой реализации коллекции Java - метод

collection.iterator()

должен возвращать итератор, который будет проходить по элементам этой коллекции.

Также см. Javadoc для Коллекция и Итератор для получения дополнительной информации.

1 голос
/ 23 мая 2010

Технически итераторы и коллекции не связаны напрямую. Однако итераторы в основном используются вместе с коллекциями для взаимодействия с объектами, содержащимися в коллекции.

Итераторы - это общая и гибкая концепция, которая позволяет объединять объекты, не завися от точной реализации сущности, над которой они повторяются.

...