Java) HashMap의 computeIfAbsent에 대해(feat. getOrDefault)

2023. 1. 27. 11:08·Languages | Frameworks/Java

getOrDefault

우리가 흔히 알고 있는 map의 메서드중 getOrDefault 메서드는 키값이 없으면 두번째 인자를 반환하는 것으로 알고있다.

 

평소에 코딩 문제를 풀때, Map<Integer, Integer> 같은 map에 key, value를 넣어줄 때 해당 메서드를 이용해, 

key가 존재한다면 해당 key의 value를 가져와서 +해주고, 

key가 존재하지 않는다면 default값에 + 해서 값을 넣어줬다.

 

예시
map.put("key", map.getOrDefault("key", "default값") + "더해줄 값");

 

하지만 value가 문자열 또는 정수형이 아닌 리스트일 때는 어떻게 값을 추가해줘야 할까?

Map<String, List<String>> strListMap = new HashMap<>();

// 기본값 넣기
List<String> list = strListMap.getOrDefault("locale", new ArrayList<>());
list.add("ko_KR");
strListMap.put("locale", list);

이런식으로 작성을 해줘야 하는데, 이 코드를 computeIfAbsent와 람다로 한줄로 줄일 수가 있다.

computeIfAbsent

Map<String, List<String>> strListMap = new HashMap<>();

// 기본값 넣기
strListMap.computeIfAbsent("locale", key -> new ArrayList<>()).add("ko_KR");

 

 

Java8버전 이후 람다와 Stream API의 등장으로 편의성을 느끼고, 필요성을 깨닫고 있는 요즘, 틈틈히 공부해야겠다는 생각이 들게 만드는 포스팅이었다.

 

 

 

📗참고사이트

Java HashMap 구현에 대해 (Effective java 3th - Item11)

'Languages | Frameworks > Java' 카테고리의 다른 글

Java) 2차원 배열 오름차순 정렬(Arrays.sort 람다식)  (0) 2023.01.27
Java) List와 ArrayList의 차이?  (0) 2022.11.08
JPA, JPQL  (0) 2022.09.27
암호화 알고리즘 종류와 추천(SHA, PBKDF2, Bcrypt) + Java 적용 샘플  (0) 2022.07.18
게시판 글이 중간에 삭제시 > 번호 초기화후 인덱싱 하는 방법  (0) 2022.07.13
'Languages | Frameworks/Java' 카테고리의 다른 글
  • Java) 2차원 배열 오름차순 정렬(Arrays.sort 람다식)
  • Java) List와 ArrayList의 차이?
  • JPA, JPQL
  • 암호화 알고리즘 종류와 추천(SHA, PBKDF2, Bcrypt) + Java 적용 샘플
Ohde
Ohde
블로그 이사했습니다! https://velog.io/@pigonhair/posts
  • Ohde
    Ohde's Blog
    Ohde
  • 전체
    오늘
    어제
    • 전체 (83)
      • Languages | Frameworks (41)
        • Java (10)
        • Spring (23)
        • Docker (8)
      • Git | Github (1)
      • DBMS (4)
        • SQL (4)
      • DevOps | Server (3)
      • OS (6)
        • Linux (6)
      • Algorithm (26)
        • Theory (1)
        • Data Structure (7)
        • BaekJoon (5)
        • Programmers (1)
        • KBro Study (12)
  • 블로그 메뉴

    • Github
    • BaekJoon
    • solved class
    • 방명록
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Ohde
Java) HashMap의 computeIfAbsent에 대해(feat. getOrDefault)
상단으로

티스토리툴바