[그린컴퓨터] Server/JAVA(자바 JDK)

컬렉션 프레임워크 실습 { Collection 요소를 순회하는 Iterator }

Ben의 프로그램 2023. 7. 20. 13:08
728x90
Collection 요소를 순회하는 Iterator
MemberArrayList.java 의 removeMember( ) 메서드를 보면 for 문과 get 메서드를 사용하여 회원을 순차적으로 하나씩 꺼내면서 매개변수와 같은 아이디를 찾습니다.
그런데 순서가 없는 Set 인터페이스를 구현한 경우에는 get(i) 메서드를 사용할 수 없습니다. 이때 Iterator 를 사용합니다. Iterator 는 Collection 인터페이스를 구현한 객체에서 미리 정의되어 있는 iterator( ) 메서드를 호출하여 참조합니다. 예를 들어 Collection 을 구현한 ArrayList 에 iterator( ) 메서드를 호출하면 Iterator 클래스가 반환되므로 다음처럼 Iterator형 변수에 대입해 사용합니다. 
Iterator ir = memberArrayList.iterator( );


Iterator를 사용하여 모든 요소를 순회할 때는 다음의 2가지 메서드를 활용합니다.
boolean hasNext( ) : 이후에 요소가 더 있는지를 체크하는 메서드이며, 요소가 있다면 true를 반환합니다.
E next( ) : 다음에 있는 요소를 반환합니다. 

이 두 메서드를 활용하여 MemberArrayList 클래스의 removeMember( ) 메서드를 수정해 보겠습니다.
기본적으로 Iterator 를 쓰는 이유는 index 가 없는 자료구조에서 순차적으로 자료를 가져오기 위해서 사용합니다. arrayList.iterator( ) 메서드를 호출하여 Iterator를 가져옵니다. Iterator<Member> 와 같이 제네릭 자료형으로 Iterator 가 순회할 요소의 자료형을 지정합니다. Iterator 는 각 요소를 순회하기 때문에 hasNext( )의 결과가 true 이면 다음 요소를 가져오는 next( ) 메서드를 호출합니다 나머지 비교 부분은 for문과 get(i) 메서드를 사용하는 경우와 같습니다.