Ітератор в Java

Ітератор в Java

Ітератор у Java є одним із найпоширеніших курсори в Java Collections Framework . Він використовується для обходу або ітерації елементів колекції один за одним.

  • Він використовується для переміщення елементів лише в прямому напрямку.
  • Безпечно видаляє елементи під час обходу за допомогою remove().
  • Ітератор — це універсальний курсор, який застосовується до всіх типів колекцій — List Set і Queue.

Оголошення ітератора

Ітератор публічного інтерфейсу

Тут E представляє тип елементів, які потрібно повторити.

Створення об'єкта ітератора

Об’єкт Iterator створюється шляхом виклику методу iterator() об’єкта колекції. Тут ми будемо використовувати ітератор для обходу та друку кожного елемента в ArrayList .

Колекція імена = новий ArrayList <>();
Ітератор itr = names.iterator();

Java
   import     java.util.ArrayList  ;   import     java.util.Iterator  ;   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {          // Create an ArrayList and add some elements      ArrayList   <  String  >     al     =     new     ArrayList   <>  ();      al  .  add  (  'A'  );      al  .  add  (  'B'  );      al  .  add  (  'C'  );      // Obtain an iterator for the ArrayList      Iterator   <  String  >     it     =     al  .  iterator  ();      // Iterate through the elements and print each one      while     (  it  .  hasNext  ())     {          // Get the next element      String     n     =     it  .  next  ();         System  .  out  .  println  (  n  );         }      }   }   

Вихід
A B C  

Ієрархія Ітератора

Ітератор є частиною пакет java.util і реалізується всіма класами колекції через їхні підінтерфейси.

listiterator_extends_iterator_Ітератор-курсор

Методи інтерфейсу ітератора

Інтерфейс ітератора визначає три методи, перераховані нижче:

  • hasNext(): Повертає true, якщо ітерація містить більше елементів.
  • наступний(): Повертає наступний елемент ітерації. Це кидає NoSuchElementException якщо більше немає елемента.
  • видалити(): Видаляє останній елемент, повернутий next(). Цей метод можна викликати лише один раз за виклик next().

Примітка : метод remove() може створювати два винятки, а саме:

Внутрішня робота

У цьому розділі ми спробуємо зрозуміти, як Java Iterator і його методи працюють внутрішньо. Щоб зрозуміти цю функцію, візьмемо наступний об’єкт LinkedList.

крок 1: Тепер давайте створимо об’єкт Iterator на об’єкті List, як показано нижче:

Ітератор citiesIterator = cities.iterator();

Ітератор 'citiesIteartor' виглядатиме так:

Ітератор Java Крок 1Крок-1

Тут курсор ітератора вказує на перший елемент списку.

Крок 2: Тепер ми запустимо наступний фрагмент коду.

citiesIterator.hasNext();
citiesIterator.next();

Ітератор Java, крок 2Крок-2

Коли ми запускаємо наведений вище фрагмент коду, курсор ітератора вказує на перший елемент у списку, як показано на діаграмі вище.

крок 3: Тепер ми запустимо наступний фрагмент коду.

citiesIterator.hasNext();
citiesIterator.next();

Ітератор Java, крок 3Крок-3


Коли ми запускаємо наведений вище фрагмент коду, курсор ітератора вказує на другий елемент у списку, як показано на схемі вище.

крок 4: Виконайте цей процес, щоб досягти курсору ітератора до кінцевого елемента списку.

Крок n ітератора JavaКрок-4

крок 5: Після прочитання останнього елемента, якщо ми запускаємо наведений нижче фрагмент коду, він повертає хибне значення.

citiesIterator.hasNext();

Ітератор Java в кінці

Оскільки курсор ітератора вказує на кінцевий елемент списку hasNext() метод повертає хибне значення.

Примітка: Java Iterator підтримує лише ітерацію в прямому напрямку, тому він відомий як односпрямований курсор. Навпаки, ListIterator є двонаправленим, що дозволяє проходити в обох напрямках.

Java-Ilterator-6Ітератор Java: Прямий напрямок

приклад: Тут ми будемо використовувати ітератор для обходу та видалення непарних елементів зі списку ArrayList.

Java
   import     java.util.ArrayList  ;   import     java.util.Iterator  ;   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {          // Creating an ArrayList of Integer type      ArrayList   <  Integer  >     al     =     new     ArrayList   <>  ();      // Adding elements to the ArrayList      for     (  int     i     =     0  ;     i      <     10  ;     i  ++  )     {      al  .  add  (  i  );      }      // Printing the original list      System  .  out  .  println  (  'Original List: '     +     al  );      // Creating an Iterator for the ArrayList      Iterator   <  Integer  >     itr     =     al  .  iterator  ();      // Iterating through the list and removing odd elements      while     (  itr  .  hasNext  ())     {          // Getting the next element      int     i     =     itr  .  next  ();             System  .  out  .  print  (  i     +     ' '  );         // Removing odd elements      if     (  i     %     2     !=     0  )     {      itr  .  remove  ();      }      }      System  .  out  .  println  ();      // Printing the modified list after removal of odd elements      System  .  out  .  println  (  'Modified List: '     +     al  );      }   }   

Вихід
Original List: [0 1 2 3 4 5 6 7 8 9] 0 1 2 3 4 5 6 7 8 9 Modified List: [0 2 4 6 8]  

Пояснення: У наведеному вище прикладі ми створюємо ArrayList з цілих чисел, потім виконуємо його ітерацію за допомогою ітератора та видаляємо всі непарні числа. Він друкує список до і після видалення непарних елементів і друкує змінений список лише з парними числами.


Кращі Статті

Категорія