목차
- Iterator, Listlterator, Enumeration
- Iterator 쓰는 이유
- Iterator의 장점
- Iterator의 메서드
- Iterator의 사용방법
- Iterator 예제
- Map과 Iterator의 관계
Iterator, Listlterator, Enumeration
- 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스
- 핵심은 hasNext(확인)와 next(읽기) 메서드
- Enumeration은 Iterator의 구버전
- Listlterator는 Iterator의 접근성을 향상시킨 것 (단방향 => 양방향) - previous( )
Iterator를 쓰는 이유
- 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것
- 컬렉션 마다 생긴 것(구조)이 달라서 요소를 읽어오는 방법이 다른데 그것을 표준화 한 것!!
- 구조가 어떻게 되어있든 요소가 있는지 확인하고 읽어옴!!
Iterator의 장점
- 표준화가 되어서 우리가 읽어오는 코드는 변경하지 않아도 된다.
- 컬렉션 클래스마다 읽어오는 방법을 배우지 않아도 된다!
Iterator 인터페이스의 메서드
Iterator 사용방법
- 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것.
- 컬렉션에 iterator( )를 호출해서 Iterator를 구현한 객체를 얻어서 사용.
- Collection 인터페이스에서 가지고 있는 메서드이기 때문에 List, Set 인터페이스도 가지고 있다.
List list = new ArrayList(); // 다른 컬렉션으로 변경할 때는 이부분만 고치면 된다.
Iterator it = list.iterator();
while (it.hasNext()) { // boolean hasNext() 읽어올 요소가 있는지 확인
System.out.println(it.next()); // Object next() 다음 요소를 읽어오기
}
예제
public class Iterator2 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
//HashSet list = new HashSet();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
Iterator it = list.iterator();
while (it.hasNext()) { // 한번 읽으면 다시 읽을 수 없다.
Object obj = it.next();
System.out.println(obj);
}
//iterator는 일회용이라 다 쓰고 나면 다시 얻어와야 한다.
it = list.iterator(); // 새로운 iterator 객체를 얻는다.
while (it.hasNext()) { // 다시 읽어올 것이 없다.
Object obj = it.next();
System.out.println(obj);
}
for (int i = 0; i < list.size(); i++) {
Object obj = list.get(i); // HashSet의 요소는 읽을 수 없다.
System.out.println(obj);
}
}
}
Map과 Iterator
- Map에는 iterator( )가 없다.
- iterator는 Collection 인터페이스에 정의되어 있고, Map은 Collection의 자손이 아니다.
- keySet( ), entrySet( ), values( )를 호출해야 한다.
Map map = new HashMap();
Set eSet = map.entrySet();
Iterator it = eSet.iterator();
//Iterator it = map.entrySet().iterator(); 한줄로 나타내기
while (it.hasNext()) {
Object obj = it.next();
System.out.println(obj);
}
'Java' 카테고리의 다른 글
[Java] Comparator와 Comparable 객체 정렬 (0) | 2024.05.08 |
---|---|
[Java] Arrays - 배열을 쉽게 다루고 싶다면 (0) | 2024.05.07 |
[Java] Stack과 Queue (0) | 2024.05.07 |
[Java] LinkedList 특징 (0) | 2024.05.06 |
[Java] 컬렉션 프레임워크, ArrayList (0) | 2024.05.05 |