이번엔 Iterator에 대해서 정리해보겠습니다.

컬렉션프레임워크에서는 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화 하였습니다.

컬렉션에 저장된 요소로 접근하기 위해 Iterator라는 인터페이스를 정의하고있습니다.


메서드는 간단하게 3개가 있습니다.


boolean hasNext() : 다음에 반복할 요소가 있는지에 대해 확인. 있으면 true, 없으면 false를 반환

Object next() : 다음 요소를 읽어온다.

void remove() : 해당 요소를 삭제한다.


지난 [java] 34. Collections(컬렉션) - List에서 사용했던 예제를 이용해서 정리해보겠습니다.

IteratorDemo.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.ArrayList;
 
public class IteratorDemo {
    public static void main(String[] args){
        ArrayList<String> arraylist = new ArrayList<String>();
        
        arraylist.add("포도");
        arraylist.add("사과");
        arraylist.add("오렌지");
        arraylist.add("복숭아");
        arraylist.remove(2);
        
        for(int i = 0; i <arraylist.size(); i++)
        {
            String fruit = arraylist.get(i);
            System.out.println(fruit);
        }
    }
}
 
 
cs


위의 13번라인의 for문을 통해 각 요소들을 출력시키는데요.

Iterator를 이용해서 출력해보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.ArrayList;
import java.util.Iterator;
 
public class IteratorDemo {
    public static void main(String[] args){
        ArrayList<String> arraylist = new ArrayList<String>();
        
        arraylist.add("포도");
        arraylist.add("사과");
        arraylist.add("오렌지");
        arraylist.add("복숭아");
        arraylist.remove(2);
        
        Iterator<String> i = arraylist.iterator();
        while(i.hasNext()){
            System.out.println(i.next());
        }
    }
}
cs
기존의 for문을 14번~17번라인으로 바꾸었습니다.

컬렉션인터페이스를 살펴보면 iterator()라는 메소드가 있습니다.
이 메소드를 사용하게 되면 Iterator타입의 객체를 반환해줍니다.
그리고 위에서 먼저 보았듯이 3개의 메소드를 가지고 요소를 읽어 올 수 있습니다.

i 에는 포도, 사과, 오렌지, 복숭아 이렇게 4개의 과일이 들어가있다고 보시면 됩니다.
그리고 while(i.hasNext())를 하여 요소가 있는지 확인을 하게 되는데 현재 4개의 과일이 있으므로 true를 반환하고
while문을 실행하게 됩니다.
16번 라인에서 i.next()에 의해서 첫번째 요소의 값을 읽어옵니다.
먼저 포도가 출력이 되겠네요.
다시 while문을 실행 할 것이고, 그 다음인 사과가 출력이 됩니다.
이런 식으로 복숭아 까지 출력이 되고 난 후 그 다음의 요소가 없으므로 while문을 종료하게 됩니다.