Iterator
📚참고
컬렉션 프레임워크와 핵심 인터페이스
Iterator, ListIterator, Enumeration
- 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스
- Enumeration은 Iterator의 구버전
- ListIterator는 Iterator의 접근성 향상 시킨 버전
- Iterator는 단방향
- ListIterator는 양방향 (privious() 존재)
Iterator 메서드
// 읽어 올 요소 확인
boolean hasNext();
// 다음 요소 읽어옴
Object next();
Iterator 존재 이유
- List, Map, Set 컬렉션의 데이터를 확인하고 읽는 방법을 표준화함
- 성능 등의 문제로 컬렉션을 교체할 때, 데이터를 확인하고 읽는 코드를 수정하지 않아도 됨
- 만약 for문 사용했다면 타 컬렉션으로 교체 시, 기존 코드의 for문 사용할 수 없다.
- 예를 들어, List의 get()가 HashSet엔 없음
Iterator 사용법
- Collection에 iterator()를 호출해서 Iterator를 구현한 객체를 얻는다.
- [참고] Collection을 구현한 자손은 List, Set
- iterator는 1회용이라 다 쓰고나면 다시 얻어와야 사용 가능
public interface Collection {
...
public Iterator interator();
...
}
// 다른 컬렉션으로 변경 시, 2 line만 고치면 됨
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
Iterator it = list.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
// iterator 다시 얻어와야함
// 만약 다시 얻어오지 않고 17 line 실행하면 hasNext()는 false 반환
Iterator it = list.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
Map과 Iterator
- Map에는 iterator() 없다.
- keySet(), entrySet(), values() 호출하여 사용할 수 있다.
Map map = new HashMap();
Iterator it = map.entrySet().iterator();
'JAVA > 컬렉션 프레임워크' 카테고리의 다른 글
Set (0) | 2021.06.15 |
---|---|
Comparator & Comparable (0) | 2021.06.01 |
Arrays (0) | 2021.05.31 |
LinkedList (0) | 2021.05.04 |
컬렉션 프레임워크 (Collection Framework) (0) | 2021.05.02 |
댓글
이 글 공유하기
다른 글
-
Comparator & Comparable
Comparator & Comparable
2021.06.01 -
Arrays
Arrays
2021.05.31 -
LinkedList
LinkedList
2021.05.04 -
컬렉션 프레임워크 (Collection Framework)
컬렉션 프레임워크 (Collection Framework)
2021.05.02