[ Iterator, Enumeration ]

둘 다 컬렉션 객체들의 요소들을 조회할 때 사용한다.

(for문으로 데이터를 가져오는 방법도 있지만 순환 인터페이스인 iterator와 Enumeration을 사용하는 방법도 있다.)

 

[ Iterator vs Enumeration ]

Iterator는 remove()를 제공한다.

Enumeration보다 Iterator인터페이스를 사용하는 것이 더 낫다.(Enumeration은 legacy)

 

[ Iterator 함수 ]

- hasNext() : 순회할 다음 원소가 남아 있으면 True를 반환한다.

- next() : 다음 원소로 이동하여 반환한다.

- remove() : 가장 최신에 반환 된 원소를 삭제한다.

- forEachRemaining(Consumer<? super E> action) : 모든 원소가 주어진 작업을 처리하거나, 예외가 발생할때까지 작업을 수행한다.

 

[ Enumeration 함수 ]

- asIterator() : Iterator 인터페이스형으로 바꿔서 반환한다.

- hasMoreElements() : enumeration에 순회할 다음 원소가 남아있는지 확인한다. (= Iterator함수 hasNext())

- nextElement() : 다음 원소를 반환한다. (= Iterator함수 next())

 

[ 예제 ]

request.getParameterNames().asIterator().forEachRemaining(...);

request.getParameterNames()의 반환값은 Enumeration이다.

asIterator()을 통해 Enumeration 인터페이스를 Iterator 인터페이스형으로 바꿔서 반환하고,

forEachRemaining()로 예외가 발생하기 전까지 모든 원소에 대해서 주어진 작업을 수행한다.

+ Recent posts