Iterator은 컬렉션들의 요소를 읽어올 때 쓰는 인터페이스임
모든 컬렉션에 이용이 가능한 것으로 보인다.
for문으로 꺼내는거 보단 이걸 써서 빼는게 편하다.
hasNext() 다음 요소가 있는지 확인하여 true를 리턴 (false) false를 리턴하면 마지막 요소라는 뜻
next() 다음 요소를 리턴하고 다음 위치로 이동 배열에 값이 없을 때 사용하면 오류가 발생한다.
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를 호출 하는 순간 인덱스가 넘어가는 것으로 보인다...