logo

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_' title=반복자 커서

반복자 인터페이스의 방법

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

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

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

내부 근무

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

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

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

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

자바 반복자 1단계' loading='lazy' title=1단계

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

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

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

자바 반복자 2단계' loading='lazy' title=2단계

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

자바의 정규식

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

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

자바 반복자 3단계' loading='lazy' title=3단계


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

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

Java의 유사한 인터페이스
Java 반복자 단계 n' loading='lazy' title=4단계

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

cityIterator.hasNext();

마지막에 Java 반복자' loading='lazy' title=

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

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

Java-Ilterator-6' loading='lazy' title=Java 반복자: 순방향

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