Iterator를 사용했더니 나온 에러.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorTest {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
// Iterator it = list.iterator(); 이렇게 쓰면 concurrentmodificationException 발생
list.add("Hello");
for(Iterator<String> iterator = list.iterator(); iterator.hasNext();){
String value = iterator.next();
// value = iterator.next(); // next 한 번 더하면 오류 발생
System.out.println(value);
}
}
}
Iterator 변수(위 코드에서는 it)에 list.iterator()를 대입하고 기존 ArrayList에 값을 추가하거나 삭제하면
Iterator 변수가 ArrayList 안에 있는 값의 주소를 가져오지 못한다.(참조를 못한다)
그래서 변수를 추가하거나 삭제 한 다음에 iterator를 호출하자.
반복문이라면 값이 바뀔 때 마다 List의 iterator를 계속 새롭게 호출해서 넣어줘야 한다!
'Programming > Java' 카테고리의 다른 글
유저와 웹의 통신은 어떻게 이루어지는가? (0) | 2022.02.05 |
---|---|
[JAVA] REST 와 REST API의 차이와 간단하게 이해하기 (0) | 2022.01.27 |
[JAVA] URI와 URL의 차이 간단하게 이해 (0) | 2022.01.27 |
[Java] 디자인 패턴 - Decorator(데코레이터, 장식자) 패턴 (0) | 2022.01.25 |
[Java] 디자인 패턴 - Proxy(프록시) 패턴 (0) | 2022.01.25 |