Iterator, ListIterator, Enumeration
컬렉션(List, Set, Map)에 저장된 요소를 접근하는데 사용하는 인터페이스
Iterator
Enumeration의 최신 버전으로 이 인터페이스를 사용하기를 권장
컬렉션의 요소를 읽어오는 방법을 표준화했기 때문에 코드의 재사용성 극대화
ListIterator
Iterator에 양방향 조회 기능을 추가 (List를 구현한 경우에만 사용 가능)
Enumeration
Iterator의 구버전
iterator() 메서드
Collection 인터페이스에 정의된 메서드
Collection 인터페이스의 자손인 List, Set에도 iterator() 메서드가 포함되어 있다.
boolean hasNext() 메서드
컬렉션 클래스에서 읽어올 요소가 남아있는지 확인
있으면 true, 없으면 false
Object next() 메서드
다음 요소를 읽어옴
next()를 호출하기 전에 hasNext()를 호출해서 얻어올 요소가 있는지 확인하자
사용 방법
iterator()를 호출하여 Iterator를 얻은 다음 while문을 사용해서 컬렉션 클래스들의 요소를 읽어온다.
List list = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()) { // 읽어올 요소가 있는지 확인
System.out.println(it.next()); // 다음 요소를 읽어옴
}
예제
import java.util.ArrayList;
import java.util.Iterator;
class Ex11_5 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
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.print(obj);
}
// get() 메서드를 가진 list에서만 사용 가능
for(int i = 0; i < list.size(); i++) {
Object obj = list.get(i);
System.out.print(obj);
}
}
}
/* console
1234512345 */
Map과 Iterator
Map에서는 Iterator를 직접 호출할 수 없고, KeySet(), entrySet(), values()와 같은 메서드를 통해
키와 값을 각각 따로 Set 형태로 얻어온 후에 다시 iterator()를 호출해야 Iterator를 얻을 수 있다.
사용 방법
Map map = new HashMap();
Iterator it = map.entrySet().iterator(); // 키=값 형태로 꺼내오기
Iterator it = map.keySet().iterator(); // 키만 꺼내오기
Iterator it = map.values().iterator(); // 값만 꺼내오기
예제
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
class Ex11_5 {
public static void main(String[] args) {
Map map = new HashMap();
map.put("이름", "홍길동");
map.put("나이", "20");
map.put("주소", "서울");
Iterator it = map.entrySet().iterator();
// Iterator it = map.keySet().iterator(); // key만 출력
// Iterator it = map.values().iterator(); // value만 출력
while(it.hasNext()) {
Object obj = it.next();
System.out.println(obj);
}
}
}
/* console
이름=홍길동
나이=20
주소=서울
*/
'JAVA' 카테고리의 다른 글
자바 / OOP / 객체 / 클래스 / 인스턴스 / JVM 메모리구조 (0) | 2020.12.17 |
---|---|
오류(error)와 예외(exception) (0) | 2020.12.10 |
ArrayList (0) | 2020.10.13 |
컬렉션 프레임워크와 핵심 인터페이스 (0) | 2020.10.08 |
배열 (0) | 2020.09.30 |