유블로그

[Java] Iterator 본문

Java

[Java] Iterator

yujeong kang 2020. 8. 11. 14:52

대부분의 Collection Class 들은 iterator interface 를 구현한다.

Iterator 의 method들을 통해서 Collection의 각 객체에 접근할 수 있다.

데이터를 처음부터 끝까지 보려고할 때 쓰는 게 좋다.

 

< Iterator Methods >

boolean hasNext() 현재 위치에 데이터가 있는 지 판단(true/false)
E next() 실제 데이터 가져오기 + 위치값 조정(+1)
remove() 마지막 가져온 데이터위치의 데이터 삭제

 

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);

Iterator<Integer> iter = list.iterator();
while(iter.hasNext()) {
  Integer a = iter.next();
  System.out.println(a);
}

 

for 문으로 순회하다가 List 요소 삭제하면 list.size()에서 오류날 수 있으니 iterator에서 list.remove() 사용하는 것이 좋다.

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

public class Test01 {
	/**
	 * Iterator 이해하기
	 * 
	 *    hasNext() : 현재 위치에 데이터가 있는지 판단(true/false)
	 *    next() : 실제 데이터 가져오기 + 위치값 조정(+1)
	 *    remove() : 마지막 가져온 데이터의 위치 데이터 삭제
	 */
	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<>();
		list.add(1);
		list.add(2);
		list.add(3);
		list.add(4);
		
		Iterator<Integer> ite = list.iterator();
		while (ite.hasNext()) {
			System.out.println(ite.next());
			ite.remove();
		}
		System.out.println(list);
		
		/*
		for (int i = list.size() - 1; i >= 0; i--) {
			list.remove(i);
		}
		System.out.println(list);
		*/
		
		/*
		for (int i = 0; i < list.size(); i++) {
			list.remove(i);
		}
		System.out.println(list);
		*/
		
		
		/*
		Iterator<Integer> ite = list.iterator();
		while( ite.hasNext() ) {
			System.out.println(ite.next());
		}
		*/
		
		// 1.5 부터 제공
		// 위치를 활용해야 한다면... 
		// 별도의 위치 관련 변수 추가
		/*
		int loc = 0;
		for (int data : list) {
			System.out.println(data);
			
			// 리스트의 데이터가 변경되지는 않는다.
			data = 100;
			
			loc++;
		}
		*/
		
		/*
		// 1.4 까지 주로 사용
		for (int i = 0; i < list.size(); i++) {
			// int = Integer // AutoUnBoxing(기 = 참), AutoBoxing(참 = 기)  
			int data = list.get(i);
			System.out.println(data);
		}
		*/
	}
}

'Java' 카테고리의 다른 글

[Java] Abstract, Interface  (0) 2020.08.12
[Java] 예외(Exception)  (0) 2020.08.11
[Java] Collections (+Generic)  (0) 2020.08.11
[Java] Inner class  (0) 2020.08.10
[Java] Interface - 추상화  (0) 2020.08.10