void remove()
next()
로 읽어 온 요소를 삭제한다. <- 특정위치의 요소를 삭제하는 것이 아님!!next()
를 호출한 다음에 호출해야 한다!!Iterator
를 상속받아서 기능을 추가한 것List
인터페이스를 구현한 ArrayList, LinkedList
만 사용이 가능!boolean hasNext()
boolean hasPrevious()
Object next()
<- hasNext()
호출 후
Object previous()
<- hasPrevious()
호출 후
void remove()
import java.util.ArrayList;
import java.util.ListIterator;
public class ListIteratorEx1 {
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.println(it.next()); // 순방향으로 진행하면서 읽어온다.
}
System.out.println();
while(it.hasPrevious()) {
System.out.println(it.previous()); //역방향으로 진행하면서 읽어온다.
}
}
}
->
1
2
3
4
5
5
4
3
2
1
import java.util.ArrayList;
import java.util.Iterator;
public 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("copy2 : "+copy2);
System.out.println();
// 재사용이 안되므로 다시 얻어와야 한다.
it = original.iterator();
while(it.hasNext()) {
copy2.add(it.next());
it.remove(); //꼭!! next()호출한 다음에 사용!!
}
System.out.println("== original에서 copy2로 이동(move) ==");
System.out.println("original : "+original);
System.out.println("copy1 : "+copy1);
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]
copy2 : []
== original에서 copy2로 이동(move) ==
original : []
copy1 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
copy2 : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]