본문 바로가기

CodingTest/java

if문 + map.containsKey() 대신 더 편한 방법

반응형

java 1.8 ~

default V merge(K key,
                V value,
                BiFunction<? super V,? super V,? extends V> remappingFunction)

 

key - 결과 값과 연결될 키

value - 키와 연결된 기존 값과 병합될 null이 아닌 값 또는 키와 연결된 기존 값이나 null 값이 없는 경우 해당 키와 연결될 값

remappingFunction - 값이 존재할 경우 값을 다시 계산하는 함수

 

지정된 키와 연결된 새 값 또는 해당 키와 연결된 값이 없는 경우 null을 반환.

 

key가 없거나 value가 null

→ 새 value 그냥 넣기

 

key가 있고 기존 value도 있음

→ 기존값 + 새값을 함수에 넣음

→ 함수 결과가 값이면 그 값으로 교체

→ 함수 결과가 null이면 key 자체를 제거

map.merge(key, msg, String::concat)
# String::concat - (a, b) -> a.concat(b)
# Integer::sum - (a, b) -> Integer.sum(a, b)
# Math::max - (a, b) -> Math.max(a, b)
# System.out::println - x -> System.out.println(x)
# String::toUpperCase - s -> s.toUpperCase()
# String::length - s -> s.length()

 

 

함수 자체에서 (검사되지 않은) 예외가 발생하면

해당 예외가 다시 발생하고 현재 매핑은 변경되지 않은 상태로 유지.

반응형