Simple&Natural
computeIfAbsent() vs putIfAbsent() 본문
728x90
반환값의 차이 외에는 비슷한 기능을 수행하는 것 같지만 매우 중요한 차이점이 하나 있다.
바로 키가 없는 경우 computeIfAbsent은 계산 된 값을 반환하고, putIfAbsent은 null을 반환한다는 것이다.
(키가 이미 있다면 둘다 기존의 값을 그대로 출력한다)
소스코드로 살펴보자
전자의 경우 null을 출력하는 반면,
후자의 경우 2를 출력한다.
비슷한 기능으로 생각하고 전자를 쓰면 nullPointerException을 마주할 수도 있으니 주의하여 사용하여야 한다.
참고자료)
java — Java 8 맵에서 putIfAbsent와 computeIfAbsent의 차이점은 무엇입니까?
Map 가 있다고 가정하십시오. map.putIfAbsent("key", new ValueClass()); "키"키가 이미 ValueClass에 있더라도 Map 인스턴스를 생성합니다. 이것은 불필요한 인스턴스를 만듭니다. 반면에 map.computeIfAbsent("key", k -> new ValueClass()); "키"키가 ValueClass에 없거나 Map 값에 매핑 된 경우에만 null 인스턴스를 생성합니다. 따라서 computeIfAbsent이
www.it-swarm.dev
728x90
'언어 > Java&Kotlin' 카테고리의 다른 글
코틀린 SAM 인터페이스의 람다식 관련 (0) | 2020.04.08 |
---|---|
Kotlin의 null처리 (0) | 2020.03.20 |
코틀린의 캡슐화 (0) | 2020.03.19 |
자바에서 hashcode, identityHashcode, equals, == 연산자의 비교 (0) | 2020.03.16 |
for문 조건 (0) | 2020.02.26 |