[Java8] Map의 key 가 null 일 경우 처리 방법
- Coding/Java
- 2021. 8. 2.
반응형
728x90
반응형
getOrDefault
key 가 null 일 경우 default Value 를 설정할 수 있다.
/* Map */
Map<String, Object> testMap2
= Map.ofEntries(entry("AAA", 10),
entry("BBB", 20),
entry("CCC", 30));
- Key가 존재하면 해당 Value 를 그대로 출력한다.
System.out.println(testMap2.getOrDefault("AAA", "NULL")); // 10
- Key가 존재하지 않으면 설정된 "NULL"을 출력한다.
System.out.println(testMap2.getOrDefault("DDD", "NULL")); // NULL
계산패턴 computeIfAbsent
- key 가 없을 경우 지정된 value를 쌍으로 Map 에 항목을 추가한다.
/* Map */
Map<String, Object> testMap3 = new HashMap<>();
testMap3.put("AAA", 10);
- key 가 "QQQ"인 요소가 없기 때문에 key : "QQQ", value : 50 인 항목이 추가된다.
testMap3.computeIfAbsent("QQQ", num -> 50);
System.out.println(testMap3); // {QQQ=50, AAA=10}
computeIfAbsent 메서드
...
default V computeIfAbsent(K key,
Function<? super K, ? extends V> mappingFunction) {
Objects.requireNonNull(mappingFunction);
V v;
if ((v = get(key)) == null) {
V newValue;
if ((newValue = mappingFunction.apply(key)) != null) {
put(key, newValue);
return newValue;
}
}
return v;
}
...
computeIfAbsent 메서드가 받는 mappingFunction 람다식은 key가 존재하지 않을때만 수행된다.
예시
map.computeIfAbsent(key, k -> new ArrayList<>()).add(str);
위 코드는 key가 존재하지 않을때 새로운 리스트가 생성되고, 리턴되는 Value 에 데이터가 add 되는 형식이다.
반응형
'Coding > Java' 카테고리의 다른 글
Optional 선언하기 (빈 Optional, NULL 가능 여부에 따른 Optioanl) (0) | 2021.08.08 |
---|---|
Stream 로깅 처리하기 (0) | 2021.08.07 |
[Java8] Map의 forEach, Sort, Remove (0) | 2021.08.02 |
List 인터페이스에서 List.of 의 오버로드 vs 가변인수 (0) | 2021.08.01 |
Java8 컬렉션 팩토리 생성 (List, Map, Set) (0) | 2021.08.01 |