Java의 반복자

Java의 반복자

Java의 Iterator는 가장 일반적으로 사용되는 것 중 하나입니다. Java 컬렉션 프레임워크의 커서 . 컬렉션의 요소를 하나씩 순회하거나 반복하는 데 사용됩니다.

  • 순방향으로만 요소를 이동하는 데 사용됩니다.
  • Remove()를 사용하여 순회 중에 요소를 안전하게 제거합니다.
  • Iterator는 모든 컬렉션 유형(목록 세트 및 큐)에 적용되는 범용 커서입니다.

반복자 선언

공용 인터페이스 반복자

여기서 E는 반복할 요소의 유형을 나타냅니다.

반복자의 객체 생성

Iterator 객체는 컬렉션 객체에 대해 iterator() 메서드를 호출하여 생성됩니다. 여기서는 Iterator를 사용하여 각 요소를 순회하고 인쇄합니다. 배열목록 .

수집 이름 = 새 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_반복자 커서

반복자 인터페이스의 방법

반복자 인터페이스는 아래와 같이 세 가지 메서드를 정의합니다.

  • 해즈다음(): 반복에 더 많은 요소가 있으면 true를 반환합니다.
  • 다음(): 반복의 다음 요소를 반환합니다. 그것은 던진다 NoSuchElementException 더 이상 요소가 존재하지 않는 경우.
  • 제거하다(): next()에서 반환된 마지막 요소를 제거합니다. 이 메서드는 next() 호출당 한 번만 호출할 수 있습니다.

메모 : 제거() 메소드는 다음과 같은 두 가지 예외를 발생시킬 수 있습니다.

내부 근무

이 섹션에서는 Java Iterator와 해당 메소드가 내부적으로 작동하는 방식을 이해하려고 노력할 것입니다. 이 기능을 이해하기 위해 다음 LinkedList 개체를 살펴보겠습니다.

1단계: 이제 아래와 같이 List 객체에 Iterator 객체를 생성해 보겠습니다.

반복자 cityIterator = 도시.iterator();

'citiesIteartor' 반복자는 다음과 같습니다.

자바 반복자 1단계1단계

여기서 Iterator의 커서는 목록의 첫 번째 요소 앞을 가리키고 있습니다.

2단계: 이제 다음 코드 조각을 실행하겠습니다.

cityIterator.hasNext();
cityIterator.next();

자바 반복자 2단계2단계

위의 코드 조각을 실행하면 Iterator의 커서는 위 다이어그램에 표시된 대로 목록의 첫 번째 요소를 가리킵니다.

3단계: 이제 다음 코드 조각을 실행하겠습니다.

cityIterator.hasNext();
cityIterator.next();

자바 반복자 3단계3단계


위의 코드 조각을 실행하면 Iterator의 커서는 위 다이어그램에 표시된 대로 목록의 두 번째 요소를 가리킵니다.

4단계: 반복자의 커서를 목록의 마지막 요소에 도달하려면 이 프로세스를 수행하십시오.

Java 반복자 단계 n4단계

5단계: 최종 요소를 읽은 후 아래 코드 조각을 실행하면 잘못된 값이 반환됩니다.

cityIterator.hasNext();

마지막에 Java 반복자

Iterator의 커서는 목록의 마지막 요소 이후를 가리킵니다. 해즈다음() 메서드가 거짓 값을 반환합니다.

메모: Java Iterator는 순방향 반복만 지원하므로 단방향 커서라고 합니다. 대조적으로 ListIterator는 양방향으로 탐색이 가능합니다.

Java-Ilterator-6Java 반복자: 순방향

예: 여기서는 Iterator를 사용하여 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를 만든 다음 Iterator를 사용하여 이를 반복하고 모든 홀수를 제거합니다. 홀수 요소를 제거하기 전과 제거한 후의 목록을 인쇄하고 수정된 목록에는 짝수만 인쇄합니다.