Programming/Java
Iterator
SharingWorld
2018. 3. 28. 17:15
Iterator
Iterable와 Iterator
Iterable 를 상속하는 클래스 안에 내부클래스로 Iterator를 상속하는 클래스를 만들면 좋다.
import java.util.Iterator;
class CountDown implements Iterable<Integer> {
private int n;
public CountDown(int n) {
this.n = n ;
}
@Override
public Iterator<Integer> iterator() {
return new CountDownIterator(n);
}
// inner class vs nested class
// => 구체적인 타입을 감출 수 있다.
private class CountDownIterator implements Iterator<Integer> {
private int n;
CountDownIterator(int n) {
this.n = n;
}
@Override
public boolean hasNext() {
System.out.println("hasNext()");
return n >= 0;
}
@Override
public Integer next() {
System.out.println("next()");
return n--;
}
}
}
public class Sample_0327 {
public static void main(String[] args) {
// Integer i = new Integer(42);
// Integer j = Integer.valueOf(42);
CountDown c = new CountDown(5);
for (Integer e : c) {
System.out.println(e);
}
// Iterator<Integer> iterator = c.iterator(); // Iterable
// while (iterator.hasNext()) {
// System.out.println(iterator.next());
// }
}
}