Java/객체지향

[객체지향][자바의 정석] - 17. Iterator, ListIterator, Enumeration

얄루몬 2022. 1. 27. 18:42

[Iterator(new)+, ListIterator, Enumeration(old)]

  • 컬렉션에 저장된 데이터를 접근하는 데 사용되는 인터페이스
  • Enumeration는Iterator의 구버전
  • ListIterator는 iterator의 접근성을 향상시킨 것(단방향 - > 양방향)

 

  • 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것(set,map,List)

  • 컬렉션에서 iterator()를 호출해서 iterator를 구현한 객체를 얻어서 사용한다.

 

 

 

[실습]

package javajungsuk;

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

public class Java11_4_1 {

	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 it = list.iterator();
		
		while(it.hasNext()) {
			Object obj = it.next();
			System.out.println(obj);
		}
	}

}
  • iterator는 일회용이라 다 쓰고나면 다시 얻어와야 한다.
  • 그러나 hashset을 써도 이터레이터는 사용이 가능하다는 장점이 있다.

 

 

 

[hashset을 사용한 경우]

package javajungsuk;

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

public class Java11_4_1 {

	public static void main(String[] args) {
		HashSet list = new HashSet();
		list.add("1");
		list.add("2");
		list.add("3");
		list.add("4");
		list.add("5");
		
		Iterator it = list.iterator();
		
		while(it.hasNext()) {
			Object obj = it.next();
			System.out.println(obj);
		}
		
//		for(int i = 0; i < list.size(); i++) {
//			Object obj = list.get(i);
//			System.out.println(obj);
//			
//		}
	}

}

 

 

 

[Map과 Iterator]

Map에는 iterator()가 없다. keySet(), entrySet(), values()를 호출해야 한다.

 

 

 

 

[출처]