JAVA

[JAVA] 반복자 Iterator

해니01_15 2023. 3. 7. 00:58

자바의 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법을 Iterator 인터페이스로 표준화 한다. Collection 인터페이스에서는 Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메소드를 정의하여 각 요소에 접근하게 한다. 따라서 Collection 인터페이스를 상속받는 List와 Set 인터페이스에서도 iterator() 메소드를 사용할 수 있다. 

 

반복자를 사용하는 방법에는 크게 두가지로 나뉜다. 

 

① 외부에서 사용하는 방법

 

lterator<type> 이름 = 반복할객체이름. iterator();

Iterator  <타입명> 을 작성 후 해당 반복자의 이름을 지정해주고 반복할 대상의 이름 . iterator(); 으로 마무리 해준다. 

 

Iterator 인터페이스는 다음과 같은 메소드를 사용하여 컬렉션의 각 요소에 접근할 수 있다.

메소드 설명
boolean hasNext() 해당 이터레이션(iteration)이 다음 요소를 가지고 있으면 true를 반환하고,
더 이상 다음 요소를 가지고 있지 않으면 false를 반환함.
E next() 이터레이션(iteration)의 다음 요소를 반환함.
default void remove() 해당 반복자로 반환되는 마지막 요소를 현재 컬렉션에서 제거함. (선택적 기능)
import java.util.ArrayList;
import java.util.Iterator;

public class 반복자 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		ArrayList<String> list = new ArrayList<>();
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");

//반복자를 외부에서 사용 
		Iterator<String> iter = list.iterator();
		while (iter.hasNext()) {
			String s = iter.next();
			System.out.println(s);
		}

 

 

② 내부에서 사용하는 방법

 

for - (each) 사용 : (자바에서 권장하는 방식) 

for-each 반복문은 컬렉션(collection)이나 배열(array) 등의 요소들을 순회하는 데 사용되는 특별한 형태의 반복문이다.

for (type variable : collection)의 형식으로 작성한다. 여기서 type은 컬렉션의 요소(element)의 자료형(type)을 나타내고, variable은 각 요소에 대해 사용되는 변수 이름(variable name)이며, collection은 반복문이 적용될 컬렉션을 나타낸다. 

import java.util.ArrayList;
import java.util.Iterator;

public class 반복자 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub

        ArrayList<String> list = new ArrayList<>();
		list.add("aaa");
		list.add("bbb");
		list.add("ccc");
		list.add("ddd");

        //반복자를 내부에서 사용하는 법
        for (String s : list) { 
         // for( 요소타입 변수명 : 리스트명){변수로 원하는 작업}
         System.out.println(s);
		}
	}
}