728x90

Iterator, ListIterator, Enumeration 모두 컬렉션에 저장된 요소들에 접근하는데 사용되는 인터페이스이다.

 

Iterator

컬렉션에 저장된 요소들을 읽어오는 방법을 표준화 하였다. 컬렉션에 저장된 요소들에 접근하는 기능을 가진 Iterator 인터페이스를 정의하고, Collection인터페이스에 Iterator를 반환하는 iterator()를 정의한다.

iterator() 메서드는 Collection인터페이스에 정의된 메서드로 Collection 인터페이스의 자손인 List와 Set에도 포함되어있다. 

 

Iterator 메서드

boolean hasNext() : 읽어올 다음 요소가 존재하는지 확인한다. 있으면 true, 없으면  false

Object next() : Iterator를 다음요소로 이동시켜 다음요소를 읽어온다. hasNext()로 다음요소가 존재하는지 확인하고 사용하는것이 좋다.

void remove() : next()로 읽어 온 요소를 삭제한다.

 

사용예시

iterator 생성자를 통해 ArrayList에 대한 iterator를 생성해서 가져온다. 이후 hasNext()와 next를 이용해 요소들에 하나씩 접근하여 출력한다.

 

Enumeration

Enumeration은 컬렉션 프레임워크가 만들어지기 전에 사용하던 것으로 Iterator의 구버전이라고 생각하면 된다.

 

Enumeration 메서드

boolelan hasMoerElements() : 읽어올 다음 요소가 존재하는지 확인한다. Iterator의 hasNext()메서드와 같다.

Object nextElement() : 다음 요소를 읽어온다. Iterator의 next()와 같다.

 

ListIterator

Iterator를 상속받아 기능을 추가한것으로 ArrayList, LinkedList와 같이 List인터페이스를 구현한 컬렉션에서만 가능하다.

 

ListIterator 메서드

void add(Object o) : 컬렉션에 새로운 객체 o를 추가한다.

boolean hasNext() : 읽어올 다음 요소가 존재하는지 확인한다.

boolean hasPrevious() : 읽어올 이전 요소가 존재하는지 확인한다.

Object next() : 다음요소를 읽어온다. 사용하기 전에 hasNext()로 다음요소가 존재하는지 확인하고 사용하는것이 좋다.

Object previous : next()와 반대로 이전요소를 읽어온다. previous()를 호출하기 전에 hasPrevious()를 호출해서 읽어올 요소가 있는지 확인하고 사용하는것이 좋다.

int nextIndex() : 다음 요소의 index를 반환한다.

int previousIndex() : 이전 요소의 index를 반환한다.

void remove() : next(), previous() 호출 이후 사용하는 메서드로  next(), previous()메서드로 읽어온 객체를 삭제한다.

void set(Object o) : next(), previous() 호출 이후 사용하는 메서드로  next(), previous()메서드로 읽어온 객체를 o로 변경한다.

 

remove 사용예시

while문 내부를 보면 next()메서드를 통해 다음요소에 접근한 후 remove()를 호출하는 것을 알 수 있다.

iterator가 작동한 original의 모든 요소들이 삭제되었다.

728x90

'Programming > JAVA' 카테고리의 다른 글

HashSet & TreeSet  (0) 2021.08.03
Arrays & Comparator  (0) 2021.08.02
Stack과 Queue  (0) 2021.07.29
ArrayList LinkedList  (0) 2021.07.29
Collections Framework  (0) 2021.07.26

+ Recent posts