Iterator
Iterator인터페이스 : 컬렉션에 저장된 요소에 접근하는 기능
public interface Iterator {
boolean hasNest(); //읽어 올 요소가 남아있는지 확인
Object next(); //다음 요소 읽어오기
void remove(); //보통 next()호출 한 후에 사용 , 요소 지우기
}
public interface Collection {
...
public Iterator iterator();
...
}
import java.util.*;
class IteratorEx1 {
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 o = it.next();
System.out.println(o);
}
}
}
1
2
3
4
5
ListIterator와 Enumeration
- ListIterator : Iterator에 양방향 조회 기능 추가 (List 구현한 경우만 사용가능)
- Enumeration : Iterator 구버전
import java.util.*;
class ListLiteratorEx1 {
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");
ListIterator it = list.listIterator();
while(it.hasNext()) {
System.out.print(it.next()); //순방향으로 읽어오기
}
System.out.println();
while(it.hasPrevious()) {
System.out.print(it.previous()); // 역방향으로 읽어오기
}
}
}
12345
54321
import java.util.*;
class IteratorEx2 {
public static void main(String[] args) {
ArrayList original = new ArrayList(10);
ArrayList copy1 = new ArrayList(10);
ArrayList copy2 = new ArrayList(10);
for(int i = 0; i < 10; i++) {
original.add(i + "");
}
Iterator it = original.iterator();
while(it.hasNext()) {
copy1.add(it.next());
}
System.out.println("=== Original에서 copy1로 복사(copy) ===");
System.out.println("original : " + original);
System.out.println("copy1 : " + copy1);
System.out.println();
it = original.iterator(); //Iterator은 재사용 안돼서 다시 읽어와야 됨
while(it.hasNext()) {
copy2.add(it.next());
it.remove();
}
System.out.println("=== Original에서 copy2로 복사(copy) ===");
System.out.println("original : " + original);
System.out.println("copy2 : " + copy2);
}
}
=== Original에서 copy1로 복사(copy) ===
original : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
copy1 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
=== Original에서 copy2로 복사(copy) ===
original : []
copy2 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]