본문 바로가기
안 씀/java-개념

Iterator<E> 인터페이스

by unhyepnhj 2024. 6. 9.

Iterator<E> 인터페이스

- java.util

- Vector<E>, ArrayList<E>, LinkedList<E>가 상속받는 인터페이스

- Vector, ArrayList, LinkedList, Set과 같이 요소가 순서대로 저장된 컬렉션에서 요소를 순차 검색할 때 사용

Vector<Integer> v = new Vector<Integer>();	//요소가 Integer 타입인 벡터
Iterator<Integer> it = v.iterator();	//벡서 v의 요소를 순차 검색할 Iterator 객체 리턴

- 벡터 v의 요소 타입(=Integer)에 맞추어 Integer<E>의 E에 Integer를 지정

- 벡터 v의 iterator()를 호출, v의 각 요소를 순차적으로 검색할 수 있는 반복자(Iterator 객체)

while(it.hasNext()){	//it로 벡터의 끝까지 반복
	int n = it.next();	//it가 가리키는 요소 리턴
    ...
}

- it로 v의 각 요소들을 순차 방문하는 코드

- 첫 it.next()는 v의 첫 번째 요소를 리턴, it는 다음 요소를 가리킴

 

Iterator() 메소드

- Iterator 객체 반환

- 객체를 이용하여 인덱스 없이 순차적 검색 가능 


예제 7-4 예제 7-1의 코드를 Iterator<Integer>를 이용하여 수정 

 

예제 7-1

import java.util.Vector;

public class VectorEx {
	public static void main(String[] args) {
		Vector<Integer> v=new Vector<Integer>();	//정수만 다루는 벡터 생성
		v.add(5);	//인덱스 0에 5
		v.add(4);	//인덱스 1에 4
		v.add(-1);	//인덱스 2에 -1
		v.add(2, 100);	//인덱스 2에 100이 삽입되고 -1은 인덱스 3으로 밀림
		
		System.out.println("벡터 내 요소 수: "+v.size());	//벡터 크기
		System.out.println("현재 벡터 용량: "+v.capacity());	//벡터 용량
		
		for(int i=0; i<v.size(); i++) {
			System.out.print(v.get(i)+" ");	//벡터 내 i번째 정수 출력
		}//모든 요소 출력
		System.out.println();
		
		int sum=0;
		for(int i=0; i<v.size(); i++) {
			sum+=v.elementAt(i);
		}
		System.out.println("벡터 내 모든 정수 합: "+sum);
	}
}

 

더보기

 

사실 처음 풀 때 정수 합 구할 때 it=v.iterator();을 안 적었었는데

sum이 0으로 나왔다

럴수럴수 이럴수가. 

 

이유를 찾아보니 반복자는 초기화를 해줘야 한다고 한다

Iterator 객체를 한번 사용하면 line 19에서처럼 it을 재설정해 줘야 한다

'안 씀 > java-개념' 카테고리의 다른 글

LinkedList<E> 클래스  (0) 2024.06.10
HashMap<K, V> 클래스  (0) 2024.06.09
ArrayList<E>  (0) 2024.06.09
Vector<E>  (0) 2024.06.08
컬렉션과 제네릭  (0) 2024.06.08