[Java 활용] 3.5 Iterator 클래스

Java에서 제공하는 컬렉션은 보관하고 있는 자료들을 순차적으로 접근하면서 처리할 때 사용하는 Iterator 형식을 제공하고 있습니다. Iterator는 반복자라고 부르며 컬렉션 종류에 관계없이 같은 방법으로 프로그래밍 할 수 있게 해 줍니다.

 

Iterator 형식에는 다음 요소가 있는지 판별하는 hasNext 메서드와 다음으로 이동하는 next 메서드, 읽어 온 요소를 삭제하는 remove 메서드 등을 제공합니다.

Iterator 개체는 컬렉션 개체의 iterator 메서드를 호출하여 얻어올 수 있습니다. 그리고 hasNext 메서드로 이동이 가능한지 확인한 후에 next 메서드로 해당 위치의 보관한 개체를 참조하여 원하는 작업을 수행합니다.

만약에 next 메서드로 얻어온 개체를 컬렉션에서 제거하고 싶다면 remove 메서드를 사용하세요.

 

이와 같은 Iterator 개체를 사용하면 size 메서드를 얻어와서 반복 처리하는 것보다 속도에서 불리합니다. 이는 Iterator 개체를 사용하는 부분이 있기 때문에 불가피한 사항입니다. 하지만 컬렉션 종류에 관계없이 일관성있게 프로그래밍할 수 있다는 장점을 갖고 있습니다. 여러분의 코드에 어떠한 컬렉션을 사용할 지 정해지지 않았지만 컬렉션 내에 보관한 모든 내용을 출력하는 등의 작업을 먼저 하길 원한다면 Iterator를 사용하는 것은 좋은 선택입니다. 보다 자세한 사항은 디자인 패턴을 다루는 책에서 반복자 패턴을 참고하시기 바랍니다.

 

다음은 3.4에서 작성했던 회원 관리 프로그램에서 전체 목록 기능과 특정 번호의 회원을 찾는 기능을 Iterator를 이용하여 작성한 코드입니다.

▷ 소스 3.7 Iterator 사용 (Vector를 이용한 회원 관리 프로그램)

▷ 소스 3.7 실행 결과