230310 HashMap의 메서드

Jongleee·2023년 3월 10일
0

TIL

목록 보기
202/576

putIfAbsent()
computeIfAbsent()
compute()
computeIfPresent()
merge()
getOrDefault()

1. putIfAbsent() vs. computeIfAbsent()

key의 존재 여부에 따라서 새로운 key와 value 값을 추가하는 메서드

putIfAbsent

putIfAbsent(key, value)
  • key : Map의 key 값
  • value : value 값
  • key 값이 존재하는 경우
    • Map의 value 값을 반환
  • key 값이 존재하지 않는 경우
    - key와 value를 Map에 저장하고 null을 반환

computeIfAbsent

computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
  • key : Map의 키 값
  • mappingFunction의 람다 함수는 key 값이 존재하지 않을 때만 실행
  • key 값이 존재하는 경우
    - map안에 있는 value을 반환

  • key 값이 존재하지 않는 경우
    - Map에 새로운 key와 value(mappingFunction 람다 함수를 실행한 결과) 값을 저장

2. compute() vs. computeIfPresent() vs merge()

Map의 value 값을 업데이트할 때 사용

compute

compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
  • key 값이 존재하는 경우
    remappingFunction 람다 함수 실행 결과로 value 값 업데이트

  • key가 존재하지 않는 경우
    null을 반환한다

computeIfPresent

compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
  • key 값이 존재하는 경우
    - remappingFunction 람다 함수 실행 결과로 value 값이 업데이트
  • key가 존재하지 않는 경우
    - null을 반환한다

merge

merge(K key, V value,BiFunction<? super V, ? super V, ? extends V> remappingFunction)
  • key 값이 존재하는 경우
    - Case 1 : remappingFunction 람다 함수의 결과가 null 아니면
    remappingFunction 람다 함수 실행 결과로 value 값이 업데이트
    - Case 2 : remappingFunction 람다 함수의 결과가 null 이면
    map에서 해당 key를 삭제한다
  • key가 존재하지 않는 경우
    - Map에 key, value값이 추가된다

3. getOrDefault()

getOrDefault(Object key, V defaultValue)
  • key 값이 존재하는 경우
    Map의 value값을 반환한다

  • key 값이 존재하지 않는 경우
    defaultValue을 반환

0개의 댓글