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
 * 
 */


+ Recent posts