본문 바로가기
Language/java

[Java] 컬렉션 프레임윅 (Iterator, ListIterator, Enumeration)

by gamxong 2022. 7. 27.

 

Iterator

 

: 컬렉션에 저장된 각 요소에 접근하는 기능을 가진 Iterator인터페이스를 정의하고, Collection인터페이스에는 Iterator를 반환하는 iterator()를 정의하고 있다.

: 컬렉션의 요소를 읽어오는 방법

: 한 번 사용된 Iterator는 재사용이 안되므로, 다시 얻어와야 함.

 

public interface Iterator {
    boolean hasNext();
    Object next();
    void remove();
}
public interface Collection {
    ...
    public Iterator iterator();
    ...
}

 

* Iterator인터페이스의 메서드

메서드 설명
boolean hasNext() 읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환
Object next() 다음 요소를 읽어 온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다.
void remove() next()로 읽어 온 요소를 삭제한다. next()를 호출한 다음에 remove()를 호출해야 한다.

 

* ArrayList에 저장된 요소들을 출력하기 위한 예시 코드

List list = new ArrayList();
Iterator it = list.iterator();

while(it.hasNext()) {
	System.out.println(it.next());
}

 

참조변수의 타입을 ArrayList 타입이 아니라 List 타입으로 한 이유
 ▶ 변경에 용이하기 위해서

 

* Map인터페이스를 호출할 때

- key와 value 쌍으로 저장하고 있기 때문에 직접 호출 불가

- 대신, keySet() 이나 entrySet()과 같은 메서드를 통해서 키와 값을 Set의 형태로 얻어온 후 iterator()를 호출해야 함

 

Map map = new HashMap();
...
Iterator it = map.entrySet().iterator(); 
// equal > Set eSet = map.entrySet();
//         Iterator it = eSet.iterator();

 

 

ListIterator와 Enumeration

Enumeration : Iterator의 구버젼

ListIterator : Iterator에 양방향 조회기능 추가(List를 구현한 경우만 사용가능)

 

 

댓글