Hi

Iterator 본문

Programming/Java

Iterator

SharingWorld 2018. 3. 28. 17:15
example_01

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());
	// }

	}
}

'Programming > Java' 카테고리의 다른 글

스택을 만들어보자  (0) 2018.03.29
Iterator의 순회  (0) 2018.03.28
추상클래스와 인터페이스의 차이점  (0) 2018.03.28
SOLID  (0) 2018.03.28
컴퓨터 네트워크  (0) 2018.03.28