본문 바로가기

Java/본격 Java 컬렉션

[Java] Iterator<E>

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를 사용해야한다.

728x90
반응형

'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