//Enumeration : 열거형
Enumeration, Iterator, ListIterator : 탐색기(반복자)
- 컬렉션내의 요소를 접근하기 위한 인터페이스(도구)
- Enumeration -> Iterator(*******) -> ListIterator
//Iterator
- 컬렉션 프레임워크에서 저장된 요소를 읽어오는 방법을 표준화하기 위한 역할(인터페이스)
- Colection의 하위 컬렉션들이 소유 -> Iterator 타입의 객체를 반환하는 메소드를 이미 구현(iterator())
- List, Set 계열에 구현(Map은 없음)
- 주로 읽기 전용으로 사용한다.
//Iterator 주요멤버
1. boolean hasNext() ->값이 있는지 없는지 true/false 형태
2. T next() -> 저장된 요소를 가져옴
3. remove()
//탐색
1. 일반 for(i)
2. 향상된 for()
3. Iterator
ex)
ArrayList<String> list = new ArrayList<String>();
list.add("사과");
list.add("바나나");
list.add("파인애플");
list.add("포도");
Iterator<String> iter = list.iterator();
**커서의 위치를 다시 처음으로 되돌려야 하는 상황
-> iterator를 다시 만들기
iter = list.iterator();
**루프돌려 전체 요소 출력
while(iter.hasNext()){
System.out.println(iter.next());
}
------------------------------------------------------------------
//HashMap을 Iterator을 이용하여 요소출력
HashMap<String,String> map = new HashMap<String,String>();
map.put("one","하나");
map.put("two", "둘");
map.put("three", "셋");
map.put("four", "넷");
map.put("five", "다섯");
//HashMap Loop
- Map 계열 : 순서가 없는 집합 =>Loop불가능
//List -Set
Set<String> keys = map.keySet(); //키의 집합
Iterator<String> iter = keys.iterator();
while(iter.hasNext()){
**1번째 방법
System.out.println(iter.next());
**2번째 방법
String key = iter.next();
System.out.printf("map.get(%s) = %s\n", key,map.get(key));
}
Collection<String> values = map.values(); //값의 집합
Iterator<String> iter2 = values.iterator();
while(iter2.hasNext()){
System.out.println(iter2.next());
}
-------------------------------------------------------------------------
//Iterator => ListIterator
- Iterator : 단방향 -> 전진커서
- ListIterator : 양방향 -> 전진 + 후진 커서
- ListIterator을 잘사용 안하는 이유
1. 속도가 느림
2. List계열만 지원(Set계열은 지원 안함)