Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Infresh
- HTML
- CSS
- Container
- kubernetes
- 과제의 분리
- 도파민형 인간
- 월칙
- 참조 계수
- docker
- 수부타이
- sentry
- java
- 쿠버네티스
- 공헌감
- node
- colllection
- 모두가 기다리는 사람
- try width resources
- 레퍼런스 복사
- 칭기즈칸의 위대한 장군 수부타이
- try-with-resources
- ESG
- 부자의그릇
- 비메모리 자원
- 뉴 컨피던스
- 히든 스토리
- 아웃풋법칙
- apache kafka
- 이펙티브 자바
Archives
- Today
- Total
Hi
Iterator의 순회 본문
순회(Traverse)
=> Stack을 다른 사람들이 내부 구조를 알지 못한다고 하더라도
순회를 하게 하고 싶다.
컬렉션(Collection)의 내부 구조에 상관없이 요소를 순회(열거)하고 싶다
=> Iterator
나의 컬렉션이 Iterator를 제공하고 있다.
=> Iterable
반복자(Iterator)를 사용할 때 주의할점
=> 순회 동안 절대 내부 요소에 크기의 변경이 발생하면 안된다.
: Concurrent Modification Exception
import org.junit.Test;
import java.util.Iterator;
import java.util.Stack;
// Iterator -> Enumerator
// Iterable -> Enumrable
class CountDownIterator implements Iterator<Integer> {
private int n;
public CountDownIterator(int n) {
this.n = n;
}
@Override
public boolean hasNext() {
return n >= 0;
}
@Override
public Integer next() {
return n--;
}
}
class CountDown implements Iterable<Integer> {
private int n;
public CountDown(int n) {
this.n = n;
}
@Override
public Iterator<Integer> iterator() {
return new CountDownIterator(n);
}
}
public class Sample_0326 {
@Test
public void foo() throws Exception {
Stack<String> s = new Stack<>();
s.push("Hello");
s.push("Wello");
System.out.println(s.pop());
}
public static void main(String[] args) {
CountDown c = new CountDown(10);
Iterator<Integer> iterator = c.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
for (Integer e : c) {
System.out.println(e);
}
// 10
// 9
// 8
// 7
// 6
// ...
// 1
// 0
}
}
'Programming > Java' 카테고리의 다른 글
Java의 잘못 설계된 라이브러리의 특징 (멀티 스레드 안정성) (0) | 2018.03.29 |
---|---|
스택을 만들어보자 (0) | 2018.03.29 |
추상클래스와 인터페이스의 차이점 (0) | 2018.03.28 |
Iterator (0) | 2018.03.28 |
SOLID (0) | 2018.03.28 |