Iterator은 컬렉션들의 요소를 읽어올 때 쓰는 인터페이스임

모든 컬렉션에 이용이 가능한 것으로 보인다.

for문으로 꺼내는거 보단 이걸 써서 빼는게 편하다.

  1. hasNext() 다음 요소가 있는지 확인하여 true를 리턴 (false) false를 리턴하면 마지막 요소라는 뜻

  2. next() 다음 요소를 리턴하고 다음 위치로 이동 배열에 값이 없을 때 사용하면 오류가 발생한다.

  3. remove() 제거하는거

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

public class Test {

    public static void main(String[] args) {

        ArrayList<String> A = new ArrayList<String>();
        A.add("악어");
        A.add("하마");
        A.add("타조");
        A.add("당나귀");
        System.out.println(A);

        Iterator<String> iter = A.iterator();

        System.out.println(iter.hasNext());  // true 출력
        System.out.println(iter.next()); // 악어 출력
        System.out.println(iter.hasNext());  // true 출력
        System.out.println(iter.next()); // 하마 출력
        System.out.println(iter.hasNext());  // true 출력
        System.out.println(iter.next()); // 타조 출력
        System.out.println(iter.hasNext());  // true 출력
        System.out.println(iter.next()); // 당나귀 출력
        System.out.println(iter.hasNext());  // false 출력

    }
}

next 하는 순간 다음 요소로 옮겨간다. next를 계속 해서 탐색을 할 수 있다는 거임

hasNext가 boolean을 뱉으니까 while을 활용할 수 있음

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

public class Test {

    public static void main(String[] args) {

        ArrayList<String> A = new ArrayList<String>();
        A.add("악어");
        A.add("하마");
        A.add("타조");
        A.add("당나귀");
        System.out.println(A);

        Iterator<String> iter = A.iterator();

				while(iter.hasNext()){
           System.out.print(iter.next() + " ");
    }
}
//결과
//악어 하마 타조 당나귀

hasNext가 false면 마지막 요소이므로 마지막 iter.next가 실행되지 않는다.

next를 호출 하는 순간 인덱스가 넘어가는 것으로 보인다...