Iterator<E> 인터페이스
- 컬렉션에 저장된 요소들을 읽어오는 방법의 표준화
- 인터페이스이므로 Collection의 iterator()메소드를 통해 작업합니다.
- 한 방향으로만 동작하는 단점이 있습니다.(next만 가능 previous 불가능)
- 주요 메소드
리턴 메소드명 및 설명
boolean hasNext() : 읽어 올 요소가 남았는지 여부
E next() : 다음 요소를 읽어들임
void remove() : next()로 읽어 온 요소를 삭제. next() 다음에 사용해야 함
Enumeration<E> 인터페이스
- Iterator의 예전 버전 인터페이스로 예전 소스와의 호환성 문제로 남아있는 기능
- 주요 메소드
리턴 메소드명 및 설명
boolean hasMoreElements() : 읽어 올 요소가 남아 있는지 여부
E nextElement() : 다음 요소를 읽어드림
ListIterator<E> 인터페이스
- Iterator를 상속받아 기능을 추가한 것으로 양방향으로 동작이 가능합니다. next와 previous 모두 가능하며
List에서만 사용가능합니다.
- 주요 메소드
리턴 메소드명 및 설명
boolean hasNext() : 읽어 올 다음 요소가 남았는지 여부
boolean hasPrevious() : 읽어 올 이전 요소가 남았는지 여부
E next() : 다음 요소를 읽어들임
int nextIndex() : 다음 요소의 인덱스를 리턴
E previous() : 이전 요소를 읽어드림
int previousIndex() : 이전 요소의 인덱스를 리턴
void remove() : next()로 읽어 온 요소를 삭제. next() 다음에 사용해야 함
.
.
import java.util.*;
class IteratorEx{
public static void main(String[] args) {
ArrayList list = new ArrayList(10);
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
System.out.println("Iterator 사용 : 순방향만 가능");
Iterator it = list.iterator();
while (it.hasNext()){
Object obj = it.next();
System.out.print(obj + " ");
}
System.out.println("\n");
System.out.println("ListIterator 사용 : 양방향 가능");
ListIterator li = list.listIterator();
while (li.hasNext()){
Object obj = li.next();
System.out.print(obj + " ");
}
System.out.println();
while (li.hasPrevious()){
Object obj = li.previous();
System.out.print(obj + " ");
}
System.out.println();
}
}
.
.
컬렉션을 읽어오는 방법 중에 하나이지만 for문을 이용해서 불러와도 크게 문제가 없기 때문에 크게 사용되지는 않을 것 같다. 그리고 중요한 것은 Iterator은 순방향(인덱스 번호가 작은 것에서 큰 것)으로만 읽어오기가 가능하며 역방향까지 하려면 ListIterator를 사용해야한다.
'Java > 본격 Java 컬렉션' 카테고리의 다른 글
[Java] Collection_desc (0) | 2020.07.03 |
---|---|
[Java] Arrays (0) | 2020.07.03 |
[Java] Stack - Queue (0) | 2020.07.03 |
[Java] LinkedList (0) | 2020.07.03 |
[Java] ArrayList (0) | 2020.07.03 |