도찐개찐

[JAVA] Iterator 본문

JAVA

[JAVA] Iterator

도개진 2022. 7. 20. 14:45

Iterator 란?

iterate : (계산, 컴퓨터 처리 절차를) 반복하다
iterator : 반복자
  • 데이터를 순서대로 추출할 수 있는 기능만을 함
  • Set, List 계열에 대입된 모든 것은 Iterable을 상속 받은 컬렉션을 상속 받고 있으므로 .itertor() 메소드를 사용하여 추출 가능
  • Iterator 인덱스 0번보다 위쪽을 가리킴.
  • 인덱스의 개수를 모르므로 while를 사용.
  • .hasNext() 메소드는 1칸 이동 전 이동 후 데이터가  있는지 사전 체크 있으면 true, 없으면 false
  • .next() 메소드는 1칸 이동 후 해당 데이터를 추출 함.

List Iterator 변환 및 반복 예제

public class BookArrayListTest {
	public static void main(String[] args) {
    	// 별도 Books 클래스 생성 후 ArrayList 내 제네릭 사용
		ArrayList<Book> books = new ArrayList<>();
		
		for (int i = 0; i <= 6; i++) {
			books.add(i, new Book(i+". 태백산맥", "홍길동"));
		}
		
		// 향상된 for(forEach) 사용
		for (Book book: books) {
			System.out.println(book);
		}
		
		System.out.println("================================");
		
		// Iterator 변환 사용
		Iterator<Book> iter = books.iterator();
		
		while (iter.hasNext()) {
			Book book = iter.next();
			System.out.println(book);
		}
	}
}

Map Iterator 변환 과정 및 반복 예제

public class BookMapTest {
	public static void main(String[] args) {	
		HashMap<Integer, Book> books = new HashMap<>();
		for (int i = 0; i <= 6; i++) {
			books.put(i, new Book(i+". 태백산맥", "홍길동"));
		}		
		
		Set<Integer> sets = books.keySet();
		Iterator<Integer> keys = sets.iterator();
		
		while (keys.hasNext()) {
			System.out.println(books.get(keys.next()));
		}
	}
}

Set 변환 과정은 Map 계열 변환에서 keySet 이후 변환 과정이 동일 합니다.

728x90
Comments