computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)
아래와 같은 코드가 있다고 하자.
Map<Long, Foo> map = Maps.newTreeMap();
Foo foo = map.get(id);
if (foo == null) {
map.put(id, createFoo(id));
}
IntelliJ를 사용하고 있다면 아래와 같은 Tip을 보여줄 것이다.
Map.get and condition could be replaced with single method call less... (⌘F1)
Inspection detects calls to Map.get which could be replaced with computeIfAbsent
computeIfAbsent로 바꿀 수 있다는 것인데 구문이 어떻게 될까?
세줄이 아래와 같이 한 줄로 바뀐다.
Map<Long, Foo> map = Maps.newTreeMap();
Foo foo = map.computeIfAbsent(id, k -> createFoo(id));
물론 리팩토링 하고 나서 테스트 코드 돌려보는 것은 잊지말자.
'Programing > JVM(Java, Kotlin)' 카테고리의 다른 글
[Java8] Optional.of 쓸 때 주의할 점... (0) | 2017.08.07 |
---|---|
을/를, 이/가, 은/는 을 알아서 붙여주면 좋겠다. (0) | 2017.05.04 |
[lombok] mutable 변수에 대한 PMD 에러 (0) | 2016.09.08 |
[Java] enum find static 헬퍼 메서드 (0) | 2016.09.08 |
TreeMap 정렬 순서 바꾸기 (0) | 2016.09.05 |