본문 바로가기
java/컬렉션 프레임웍

Iterator, ListIterator, Enumeration

by doni73 2025. 4. 17.

Iterator

Iterator인터페이스 : 컬렉션에 저장된 요소에 접근하는 기능

public interface Iterator {
    boolean hasNest(); //읽어 올 요소가 남아있는지 확인
    Object next(); //다음 요소 읽어오기
    void remove(); //보통 next()호출 한 후에 사용 , 요소 지우기
}
public interface Collection {
    ...
    public Iterator iterator();
    ...
}
import java.util.*;

class IteratorEx1 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");

        Iterator it = list.iterator();
        while(it.hasNext()) {
            Object o = it.next();
            System.out.println(o);
        }
    }
}
1
2
3
4
5

ListIterator와 Enumeration

  • ListIterator : Iterator에 양방향 조회 기능 추가 (List 구현한 경우만 사용가능)
  • Enumeration : Iterator 구버전
import java.util.*;
class ListLiteratorEx1 {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");

        ListIterator it = list.listIterator();
        while(it.hasNext()) {
            System.out.print(it.next()); //순방향으로 읽어오기
        }
        System.out.println();
        while(it.hasPrevious()) {
            System.out.print(it.previous()); // 역방향으로 읽어오기
        }
    }
}
12345
54321
import java.util.*;
class IteratorEx2 {
    public static void main(String[] args) {
        ArrayList original = new ArrayList(10);
        ArrayList copy1 = new ArrayList(10);
        ArrayList copy2 = new ArrayList(10);

        for(int i = 0; i < 10; i++) {
            original.add(i + "");
        }
        Iterator it = original.iterator();

        while(it.hasNext()) {
            copy1.add(it.next());
        }
        System.out.println("=== Original에서 copy1로 복사(copy) ===");
        System.out.println("original : " + original);
        System.out.println("copy1 : " + copy1);
        System.out.println();

        it = original.iterator(); //Iterator은 재사용 안돼서 다시 읽어와야 됨
        while(it.hasNext()) {
            copy2.add(it.next());
            it.remove();
        }

        System.out.println("=== Original에서 copy2로 복사(copy) ===");
        System.out.println("original : " + original);
        System.out.println("copy2 : " + copy2);
    }
}
=== Original에서 copy1로 복사(copy) ===
original : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
copy1 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

=== Original에서 copy2로 복사(copy) ===
original : []
copy2 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

'java > 컬렉션 프레임웍' 카테고리의 다른 글

Comparator와 Comparable  (0) 2025.04.21
Map  (0) 2025.04.17
Set  (1) 2025.04.17
컬렉션 프레임웍  (0) 2025.04.15