본문 바로가기

자바공부

Iterator 순차 검색, 명품 자바 프로그래밍 7장

728x90
반응형

* java.util 패키지의 Iterator<E> 인터페이스는 Vector, ArrayList, LinkedList, Set과 같이 요소가 순서대로 저장된 컬렉션에서 요소를 순차 검색할 때 사용하면 편리하다.

 

* 벡터 v의 iterator()를 호출하여, 벡터 v의 각 요소를 순차적으로 검색할 수 있는 Iterator 객체를 얻어낸다.

이때 Iterator 객체를 반복자라고 부른다.

Iterator<Integer> It = v.iterator(); // 벡터 v의 요소를 순차 검색할 Iterator 객체 리턴

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

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

Vector<Integer>객체와 Iterator 객체의 관계

* Iterator<E> 인터페이스의 메소드

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

 

* Iteration을 이용하여 vector 속의 모든 요소를 출력하고 합 구하기

package Ch7_Ex;

import java.util.*;

public class IteratorEx {
	public static void main(String[] args) {
		// 정수 값만 다루는 제네릭 벡터 생성
		Vector<Integer> v = new Vector<Integer>(); // var v = new Vector<Integer>();로 간략하게 쓸 수 있음
		v.add(5);
		v.add(4);
		v.add(-1);
		v.add(2, 100); // 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);
	}
}
반응형