Iterator 는 반복할 수 있는 자료형이다. 그래서 for 문, while 문과 같이 사용한다.

 

안에 있는 자료를 하나씩 꺼내오고 모두다 꺼내오면 종료한다는 개념을 갖고 있다.

 

for 나 while 문에서 루프를 위해서 카운터를 쓰거나, 요소의 개수를 알아낸 다음에 루프를 돌리는 방식을 취하는데 Iterator 는 그걸 사용자가 직접 알아낼 필요도 없이 모든 요소들을 순차적으로 불러올 수 있게 한다.

 

기존의 for 문이 그야말로 원초적이라면 Iterator 방식은 더 향상된 접근을 허용한다.

 

자바에서는 Iterator 인터페이스를 제공한다. List, ArrayList 등이 Iterator 를 구현한다.

 

package com.kay;

import java.util.*;

public class Test01 {
    public static void main(String[] args) {

        int rnumber;
        ArrayList alist = new ArrayList();
        for (int i = 5; i > 0; i--) {
            rnumber = (int)(Math.random()*100);
            alist.add(rnumber);
        }

        Iterator iter1 = alist.iterator();

        while(iter1.hasNext()){
            System.out.print(iter1.next() + " ");
        }
        System.out.println("\n--------------------------------");


        List<String> numbers = Arrays.asList("one","two", "three", "four", "five");
        Iterator<String> iter2 = numbers.iterator();

        while(iter2.hasNext()){
            System.out.print(iter2.next() + " ");
        }
        System.out.println("\n--------------------------------");

        for (String s: numbers) {
            System.out.print(s + " ");
        }
    }
}

예제는 다양한 방식으로 Iterator 가 사용가능하다는 것을 보여준다.

 

루프를 처음부터 끝까지 돌릴때 사이즈의 요소를 직접 구할 필요가 없다는 것만으로도 의미가 있다.

 

파이썬은 기본적으로 for 문에 Iterator 를 사용한다. Iterator 로 for문을 사용하면 처음에는 좀 아닌 것 같다가 익숙해지면 일반의 for문은 잘 안쓰게 된다.

 

docs.oracle.com/javase/8/docs/api/java/util/Iterator.html

 

Iterator (Java Platform SE 8 )

An iterator over a collection. Iterator takes the place of Enumeration in the Java Collections Framework. Iterators differ from enumerations in two ways: Iterators allow the caller to remove elements from the underlying collection during the iteration with

docs.oracle.com

 

메소드는 몇개 안되지만 꼭 필요한 것들만 들어있다.

공유하기

facebook twitter kakaoTalk kakaostory naver band