자바 iterator 질문이요
조회수 294회
/*
* Iterator 예제
* 리스트에 들어있는 일, 월, 수 중에서 수 라는 데이터를 삭제하는 예제
* iterator 안에는 hasnext, next, remove가 있다. 저 기능들을 하는 메소드가 있음
*/
package iteator;
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorPractice {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("일");
list.add("월");
list.add("수");
Iterator iter = list.iterator();
while (iter.hasNext()==true) {
String day = (String) iter.next();
if(day == "수") {
iter.remove();
} System.out.println("Day: "+ day);
}
System.out.println("=============================");
iter = list.iterator();
while (iter.hasNext() == true) {
String day = (String)iter.next();
System.out.println("Day: " + day);
}
}
}
[질문]
System.out.println("============================="); 밑 줄에 iter = list.iterator();
를 다시 값을 넣어주는 이유가 무엇인가요?
위에 Iterator iter = list.iterator(); 를 이미 썼는데요
그리고 써야하는 거라면, 둘다 이름이 iter여도 상관없는건가요?
1 답변
-
평소 처음 보는 패키지, 클래스, 함수에 대해서는 docs 를 참조하시는 습관을 들이시는게 좋다고 생각하는데요.
https://docs.oracle.com/javase/8/docs/api/index.html?java/util/ListIterator.html
list.iterator() 메서드의 경우 ArrayList 타입의 Iterator 객체를 생성하고, iter.next() 메서드를 통해 iteration 의 인덱스를 계속 옮겨주는데요.
이경우 질문해주신 내용처럼 iterator 객체를 재생성해주지 않으면 iterator 객체의 인덱스는 이미 마지막 인덱스를 참조하고 있기 때문에 아래 반복문이 의미가 없는 반복문이 되기 때문에 객체를 재생성해주는 것입니다.
댓글 입력