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를 구현한 경우만 사용가능)
'Language > java' 카테고리의 다른 글
[Java] 컬렉션 프레임윅 (Comparator와 Comparable) (0) | 2022.07.27 |
---|---|
[Java] 컬렉션 프레임윅 (Arrays) (0) | 2022.07.27 |
[Java] 컬렉션 프레임윅 (Stack과 Queue) (0) | 2022.07.21 |
[Java] 컬렉션 프레임윅 (LinkedList) (0) | 2022.07.21 |
[Java] 컬렉션 프레임윅 (ArrayList) (0) | 2022.07.21 |
댓글