본문 바로가기

자바/자바 개념

[Java] Iterator<E> / 2021.12.31

 

* 참고 자료 : 명품 자바 프로그래밍

 

Vector, ArrayList, LinkedList, Set과 같이 요소가 순서대로 저장된 컬렉션에서 요소를 순차적으로 검색할 때는 java.util 패키지의 Iterator<E> 인터페이스를 사용하면 편리하다. 여기서 <E>에는 컬렉션의 매개변수와 동일한 타입을 지정해야 한다. 

- Iterator<E>의 주요 메소드

메소드 설명
boolean hasNext() 방문할 요소가 남아 있으면 true 리턴
E next() 다음 요소 리턴
void remove() 마지막으로 리턴된 요소 제거

- Iterator<E> 생성

요소가 Integer 타입인 벡터를 선언한다면 벡터의 요소 타입에 맞추어 Iterator도 Integer로 지정해주어야 한다.
(예시)
Vector<Integer> v = new Vector<Integer>(); // 요소가 Integer 타입인 벡터
Iterator<Integer> it = v.iterator(); // 벡터 v의 요소를 순차 검색할 Iterator 객체 리턴

 

- 이제, it 객체를 이용하면 벡터의 각 요소를 순차 검색할 수 있다. 

다음은 it로 v의 각 요소들을 순차 방문하는 코드이며, 처음 it.next()는 v의 첫 번째 요소를 리턴하고, it는 다음 요소를 가리킨다.

 

while(it.hasNext()) { // it로 벡터의 끝까지 반복
    int n = it.next();  // it가 가리키는 요소 리턴. it의 요소 타입은 Integer이므로 정수 리턴
    ....
}

- Iterator를 이용하여 Vector 속의 모든 요소를 출력하고 합 구하기

package Chapter7;
import java.util.*;

public class IteratorEx {
	public static void main(String [] args) {
		// 정수 값만 다루는 제네릭 벡터 생성
		Vector<Integer> v = new Vector<Integer>();
		v.add(5);
		v.add(4);
		v.add(-1);
		v.add(2, 100);
		
		// Iterator를 이용한 모든 정수 출력하기
		Iterator<Integer> it = v.iterator(); // Iterator 객체 얻기
		while(it.hasNext()) {
			int n = it.next();
			System.out.println(n);
		}
		
		// Iterator를 이용하여 모든 정수 더하기
		int sum = 0;
		it = v.iterator(); // it 다시 설정
		while(it.hasNext()) {
			int n = it.next();
			sum += n;
		}
		System.out.println("벡터에 있는 정수의 합 : " + sum);
	}
}

 

출력 결과 :