getOrDefault(key, defaultValue)는 무조건 defaultValue를 평가(즉, 계산/실행)Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
String result = map.getOrDefault("key1", someExpensiveMethod());
위 코드에서 "key1"은 실제로 map에 존재 →someExpensiveMethod()의 리턴값은 사용되지 않음
But, 여전히 이 메서드는 실행된다
즉, getOrDefault()는 "기본값을 사용할 일이 없더라도 미리 계산해두는 것"
map.getOrDefault("missingKey", loadDataFromDatabase()); // ❌
loadDataFromDatabase()가 DB 조회처럼 무거운 작업일 경우"missingKey"가 Map에 존재하면 안 써도 될 값인데도 호출됨👉 비용 낭비!
String value = map.computeIfAbsent("missingKey", key -> loadDataFromDatabase());
"missingKey"가 없을 때만 loadDataFromDatabase() 실행getOrDefault() why? 코드 간결computeIfAbsent() why? 성능 절약 computeIfAbsent() why? 자동 저장getOrDefault()는 기본값을 항상 계산함 (있는 키에도 계산!)computeIfAbsent()는 키가 없을 때만 계산 (그리고 저장까지 함)computeIfAbsent() 고려하기!!!!이 글에서는 백준 문제 풀이 과정에서 사용한 주요 기술과 알고리즘을 설명합니다.
실제 문제 풀이 코드는 아래 깃허브 저장소에서 확인하실 수 있습니다.
👉 깃허브 - 백준 문제 풀이 저장소
이 글과 코드를 보시고 개선할 부분이나 궁금한 점이 있으면 편하게 댓글이나 메시지로 알려주세요.💪
여러분의 피드백 덕분에 더 나은 콘텐츠를 만들 수 있습니다.
함께 성장해 나가요!