package design_pattern;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
* http://iilii.egloos.com/ -출처
*
* iterator 패턴
*
* 집합체 (array, List, Set, Map) 와 개별 원소들을 분리 시켜 생각할 수 있다.
* 그 집합체가 어떤 클래스의 인스턴스 인지 신경 쓰지 않아도 된다.
*
* Enumeration 과 Iterator
*
* Enumeration 은 bolean hasMoreElements() nextElement() 를 제공
* Iterator next(), hasNext() 에 대응 된다.
*
* 차이점 1. Iterator 는 remove() 를 제공 한다.
* 2. Iterator 는 타이핑 을 덜한다.
* 3. Enumeration 이 먼저 나왔다.
*
*/
public class C01_iterator implements Iterable {
private List list = new ArrayList();
public void add(String name) {
list.add(name);
}
public Iterator iterator() {
/* 시퀀스는 hasNext() 가 아니라 next() 에서 증가 시킨다.
* (hasNext() 를 호출하고 next() 를 한번 더 호출 할 수 있기 때문이다.
*/
return new Iterator() {
int seq = 0;
public boolean hasNext() {
return seq < list.size();
}
public String next() {
return list.get(seq++);
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}
public static void main(String[] arg) {
/*
* 변수를 뽑아내는데 keyBord라는 변수를 쓰지 않는다.
*/
C01_iterator keyBord = new C01_iterator();
keyBord.add("한성");
keyBord.add("커세어");
keyBord.add("로지텍");
Iterator iterator = keyBord.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
}
}
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
jar 파일 실행 (0) | 2017.05.25 |
---|---|
디자인패턴 adapter (0) | 2017.05.24 |
간단한 BigInteger 사용법 (0) | 2017.05.12 |
instanceof (0) | 2017.05.12 |
자바의 객체 생성및 소멸 (0) | 2016.12.30 |