1. Enumeration, Iterator, ListIterator
- 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스이다.
- Enumeration < Iterator < ListIterator
2. Iterator
- 컬렉션 클래스에 저장된 요소들을 나열하는 방법을 제공한다.
- 컬렉션 클래스에 iterator()를 호출해서 Iterator를 구현할 객체를 얻는다.
- 컬렉션 인터페이스에 정의된 메서드이므로 컬렌션 인터페이스의 자손인 List와 Set에도 포함되어 있고, iterator()가 각 컬렉션의 특징에 알맞게 작성되어 있다.
반환형 |
메서드 |
설명 |
boolean |
hasNext() |
읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다. |
Object |
next() |
다음 요소를 읽어 온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다. |
void |
remove() |
next()로 읽어 온 요소를 삭제한다. next()를 호출한 다음에 remove()를 호출해야한다. (선택적 가능) |
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorTest {
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 iterator = list.iterator();
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println(obj);
} // while
} // main
} // IteratorTest
/*
*
* 결과
*
* 1
* 2
* 3
* 4
* 5
*
*/
3. Enumeration
- 컬렉션 프레임웍이 만들어지기 이전에 사용하던 것이다.
- 이전 버전으로 작성된 소스와의 호환을 위해서 남겨두고 있을 뿐이다.
반환형 |
메서드 |
설명 |
boolean |
hasMoreElements() |
읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다. Iterator의 hasNext()와 같다. |
Object |
nextelement() |
다음 요소를 읽어 온다. nextElement()를 호출하기 전에 hasMoreElements()를 호출해서 읽어올 요소가 남아있는지 확인하는 것이 안전하다. Iterator의 next()와 같다. |
4. ListIterator
- Iterator를 상속받아서 기능을 추가한 것이다.
- 컬렉션의 요소에 접글할 때 Iterator는 단방향으로만 이동할 수 있는데 반해 ListIterator는 양방향으로의 이동이 가능하다.
- 단, List인터페이스를 구현한 컬렉션에서만 사용할 수 있다.
반환형 |
메서드 |
설명 |
void |
add(Object o) |
컬렉션에 새로운 객체(o)를 추가한다.(선택적 가능) |
boolean |
hasNext() |
읽어 올 다음 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다. |
boolean |
hasPrevious() |
읽어 올 이전 요소가 남아있는지 확인한다. 있으면 true, 없으면 false를 반환한다. |
Object |
next() |
다음 요소를 읽어온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다. |
Object |
previous() |
이전 요소를 읽어온다. previous()를 호출하기 전에 hasPrevious()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전하다. |
int |
nextIndex() |
다음 요소의 index를 반환한다. |
int |
previousIndex() |
이전 요소의 index를 반환한다. |
void |
remove() |
next() 또는 previous()로 읽어 온 요소를 삭제한다. 반드시 next()나 previous()를 먼저 호출한 다음에 호출해야 한다. |
void |
set(Object o) |
next() 또는 previous()로 읽어 온 요소를 지정된 객체(o)로 변경한다. 반드시 next()나 previous()를 먼저 호출한 다음에 호출해야 한다. |
import java.util.ArrayList;
import java.util.ListIterator;
public class ListIteratorTest {
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");
ListIterator iterator = list.listIterator();
while (iterator.hasNext()) {
System.out.print(iterator.next()); // 순방향
} // while
System.out.println();
while (iterator.hasPrevious()) {
System.out.print(iterator.previous()); // 역방향
} // while
} // main
} // IteratorTest
/*
*
* 결과
*
* 12345
* 54321
*
*/'Java > Java SE' 카테고리의 다른 글
| Java JDBC(Java DataBase Connectivity) (0) | 2013.09.13 |
|---|---|
| Java 소켓 프로그래밍 (11) | 2013.08.30 |
| Java 네트워킹(Networking) (0) | 2013.08.30 |
| Java 쌍따움표 안에 쌍따움표 처리 (0) | 2013.08.29 |
| Java JDBC SWING 프로그래밍 예제 - 성적관리 (9) | 2013.08.24 |