[Java Collection] Использование Iterator для обхода Collection и принцип выполнения Iterator Iterator

Используйте интерфейс Iterator для обхода элементов коллекции

Объекты Iterator называются итераторами (тип шаблона проектирования) и в основном используются для обхода элементов в коллекции Collection .

GOF определяет шаблон итератора как: предоставление способа доступа к элементам в объекте-контейнере без раскрытия внутренних деталей объекта. Шаблон итератора создан для контейнеров . Аналог «кондуктор в автобусе», «стюардесса в поезде», «стюардесса».

Интерфейс Collection наследует интерфейс java.lang.Iterable , который имеет метод iterator() , поэтому

Класс коллекции, реализующий интерфейс Collection, имеет метод iterator() , который возвращает объект, реализующий интерфейс Iterator .

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

Каждый раз, когда объект коллекции вызывает метод iterator(), получается новый объект итератора , а курсор по умолчанию находится перед первым элементом коллекции.

 Методы интерфейса Iterator

 

 

 Перед вызовом метода it.next() необходимо вызвать it.hasNext() для обнаружения. Если не вызывается и следующая запись недействительна, прямой вызов it.next() вызовет NoSuchElementException.

 

Операция обхода элементов коллекции использует интерфейс Iterator итератора.

метод первый:

    @Test
    public void test1(){
        Collection coll = new ArrayList();
        coll.add(456);
        coll.add(123);
        coll.add(new Person("Jerry", 20));
        coll.add(new String("Tom"));
        coll.add(false);

        Iterator iterator = coll.iterator();
        System.out.println(iterator.next());
        System.out.println(iterator.next());
        System.out.println(iterator.next());
        System.out.println(iterator.next());
        System.out.println(iterator.next());
    }

Результат операции следующий:

Если мы добавим еще одно предложение: System.out.println(iterator.next());

 Результат операции следующий:

 Мы видим, что сообщается об исключении: NoSuchElementException

Способ 2:

    @Test
    public void test1(){
        Collection coll = new ArrayList();
        coll.add(456);
        coll.add(123);
        coll.add(new Person("Jerry", 20));
        coll.add(new String("Tom"));
        coll.add(false);

        Iterator iterator = coll.iterator();
        //方式一:
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        //报异常:NoSuchElementException
//        System.out.println(iterator.next());

        //方法二:不推荐
        for (int i = 0; i < coll.size(); i++) {
            System.out.println(iterator.next());
        }
    }

результат операции

Способ третий:

    public void test1(){
        Collection coll = new ArrayList();
        coll.add(456);
        coll.add(123);
        coll.add(new Person("Jerry", 20));
        coll.add(new String("Tom"));
        coll.add(false);

        Iterator iterator = coll.iterator();
        //方式一:
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        //报异常:NoSuchElementException
//        System.out.println(iterator.next());

        //方法二:不推荐
//        for (int i = 0; i < coll.size(); i++) {
//            System.out.println(iterator.next());
//        }

        //方式三:推荐
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }

 Результат операции следующий:

Операция обхода элементов коллекции использует интерфейс Iterator итератора.

Внутренние методы: hasNext() и next()

Принцип работы итератора Iterator

 

 

 Спасибо за просмотр! ! !

рекомендация

отblog.csdn.net/qq_64976935/article/details/129739964
рекомендация