본문

Iterator Pattern (반복자 패턴)

반응형

iterate는 '반복하다'라는 뜻이고, iterator은 '반복자'라는 뜻입니다. 즉 무엇인가 반복할 때 iterator 객체를 사용합니다.

 

이미지 출처: https://velog.io/@hyungjungoo95/Iterator-Pattern

 

 

iterator 패턴은 반복이 필요한 자료구조(array나 List, Set, Map과 같은 구조 등)를 모두 동일한 인터페이스를 통해 접근할 수 있도록 아래의 그림처럼 iterator 객체 속에 넣은 다음, iterator 객체의 메서드를 이용해 자료구조를 활용할 수 있도록 해줍니다.

이미지 출처: 쉽게 배우는 소프트웨어 공학 中 (2015. 11. 30., 김치수)

 

💡 Iterator.java

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class lteratorPattern implements Iterable<String> {
    private List<String> list = new ArrayList<String>();

    public void add(String name) {
        list.add(name);
    }

    public Iterator<String> iterator() {
        return list.iterator();
    }

}
 

P.S. list.iterator(); 를 풀어쓰면 아래와 같다

new Iterator<String>() {
	int seq = 0;

	public boolean hasNext() {
		return seq < list.size();
	}

	public String next() {
		return list.get(seq++);
	}
};

 

 

💡 Main.java

import java.util.Iterator;

public class Main {
    public static void main(String[] args) {
        lteratorPattern person = new lteratorPattern();
        person.add("임승한");
        person.add("홍길동");
        person.add("아무개");

        Iterator<String> iterator = person.iterator();

        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println(element);
        }
    }

}

 

 

💡 결과

임승한
홍길동
아무개
 
반응형

공유

댓글