운영 서버에서 배치 처리 중 리스트 순회하며 조건부 삭제 로직 수행 중입니다.
코드:
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
for (String item : list) {
if (item.equals("B")) {
list.remove(item);
}
}
}
}
오류: java.util.ConcurrentModificationException
시도: 리스트 복사 후 순회, 단순 for문 인덱스 제어.
질문: 성능 저하 최소화하면서 안전하게 요소 삭제하는 가장 효율적인 방법이 무엇입니까?
댓글5
-
빗방울
2026.10.31 06:28
-
빗방울
2026.10.31 09:42
인정함ㅋㅋ
가독성 개꿀인듯요.
-
빗방울
2026.10.31 10:02
ㄹㅇㅋㅋ
그냥 removeIf 쓰는 게 국룰이죠.
가장 깔끔함ㅋㅋ
-
빗방울
2026.10.31 10:55
정석대로 가려면 Iterator 쓰는 게
제일 확실하긴 함ㅋㅋ 근데 웬만하면 다들 위에 말한 대로 가더군요.
-
빗방울
2026.10.31 12:54
스트림 써서 필터링하고 다시 리스트로 만드는 방법도 있긴 함ㅋㅋ
근데 데이터 양 진짜 많으면 메모리 낭비 심할 것 같긴 하네요ㄷㄷ
모든 이야기1455
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
총 1455개의 이야기
그냥 removeIf 쓰면 깔끔할듯요.
자바 8 이상이면 그게 제일 효율적이지 않나 싶네요.
한 줄로 끝나서 편함ㅋㅋ