예시
1
2
3
4
5
6
7
for(Truck t:q){//1초 추가
t.time++;
answer++;
if(t.time==bridge_length){//경과시간이 다 채워지면 삭제
q.poll();
}
}
코드 설명: for문을 통해 Queue
원인
for문과 같은 루프문을 통해 데이터를 접근하는 도중에, 데이터 변경이 일어날 때 발생한다.
해결 방법
Iterator를 사용하여 큐의 원소에 접근, 삭제한다.
1
2
3
4
5
6
7
8
Iterator iter=q.iterator();
while(iter.hasNext()){
Truck t=(Truck)iter.next();
t.time++;
if(t.time==bridge_length){
iter.remove();
}
}
iterator()메소드를 이용해 iter를 선언, hasNext()로 현재 iter의 다음 원소가 있는지 파악한 후 있다면 next()로 값을 가져온다. remove()로 원소를 삭제한다.