Collections.emptyList() vs new ArrayList()

CHEESE·2022년 8월 10일
0

서론

null을 리턴하는 코드는 NPE를 처리하기 위한 코드를 추가로 작성해야 하고 그렇다고 성능이 좋은 것도 아니다.
List를 반환하는 로직을 작성하기 위해서 우리에게는 두 가지 선택지가 있다.
Collections.emptyList() 그리고 new ArrayList() 이 둘은 무슨 차이가 있을까?
이는 Collections.emptyList()가 무엇인지만 알면 된다.

Collections.emptyList()

public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

위에서 알 수 있는 부분은 두 가지.
1. Collections.emptyList()static으로, 이미 만들어진 객체다. 따라서 CPU와 메모리에 추가 비용이 발생하지 않는다.
2. Collections.emptyList()final, 불변 객체를 리턴한다. 따라서 객체를 받아 값을 변경해야 하는 등의 추가 작업이 있는 경우에는 new ArrayList()를 쓰는 것이 적합해보인다.

결론

null로 리턴하는 것만 피하면 된다고 생각했는데, 주의 깊게 봐야 하는 부분이 더 많았다.
컬렉션을 다루는 로직을 개발할 때에는 꼭 짚고 넘어가야 할 부분이라고 느껴져서 남겨본다.

0개의 댓글