컬렉션 인터페이스를 구현하고 있는 모든 클래스들은 iterator 메소드를 통해서 반복자를 제공한다.


Collection<E> 인터페이스에는 iterator 라는 메소드가 정의되어 있다.

Iterator<E> iterator()

iterator 메소드가 호출되면 인스턴스가 생성된다. 이 인스턴스는 Iterator<E> 인터페이스를 구현하는 클래스이다.

iterator 메소드는 이인스턴스의 참조값을 리턴한다.


Iterator 는 반복자 라는 뜻이다. 컨테이너에 담겨져 있는 값들을 하나씩

꺼내서 처리를 할수 있도록 하는것이 Iterator의 역할이다.


Iterator는 3가지 메소드를 가지고 있다.

boolean hasNext() 참조할 다음번 요소가 존재하면 true 반환

E next() 다음번 요소를 반환

void remove() 현 위치의 요소를 삭제


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
import java.util.Iterator;
import java.util.LinkedList;
 
class InteratorUsage{
    public static void main(String[] args){
        LinkedList<String> list = new LinkedList<String>();
        list.add("First");
        list.add("Second");
        list.add("Third");
        list.add("Fourth");
        
        Iterator<String> itr = list.iterator();
        
        System.out.println("반복자를 이용한 1차출력과 \"Third\"삭제");
        while(itr.hasNext())
        {
            String curStr = itr.next();
            System.out.println(curStr);
            if(curStr.compareTo("third")==0)
                itr.remove();
        }
        
        System.out.println("\n\"Third\"삭제 후 반복자를 이용한 2차 출력 ");
        itr= list.iterator();
        while(itr.hasNext())
            System.out.println(itr.next());
    }
}
cs


 

1
2
for(String str : list)
    System.out.println(str);
cs

for-each 문을 사용하면 반복자를 생성하지 않아도 되기 때문에 코드를 보다 간결하면서도 명확하게 구성할수 있다.

그러나 예제의 첫번째 while 문은 대체가 불가능 하기 때문에(데이터의 삭제) 두가지 방식 모두에 익숙해질 필요가 있다.



'Java' 카테고리의 다른 글

HashSet<E> / TreeSet<E>  (0) 2017.02.26
Set<E>  (0) 2017.02.26
List<E> / ArrayList<E> / LinkedList<E>  (0) 2017.02.26
이스케이프 시퀀스(Escape Sequence)  (0) 2017.02.26
제네릭(Generics)  (0) 2017.02.25

+ Recent posts