728x90
null을 반환하는 것은 위험하니 빈 empty List를 반환하는게 안전합니다.
empty List를 반환하기위해 사용할 수 있는 코드는 아래와 같이 두 가지 선택이있는데요,
Collections의 emptyList 와 Lists의 newArrayList는 무슨차이가 있을까요?
Collections.emptyList()
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
- Collections.emptyList() 는 static 으로 이미 만들어진 객체입니다.
- 따라서 cpu와 메모리에 추가 비용이 발생하지 않습니다.
- Collections.emptyList() 은 final 로 불변 객체를 리턴합니다.
- 따라서 객체 값을 받아 변경하는 경우에 사용하는 것은 적합하지 않습니다.
- 만약 위 객체를 받아서 변경하려는 경우 UnsupportedOperationException() 이 발생합니다.
Lists.newArrayList()
public static <E> ArrayList<E> newArrayList() {
return new ArrayList<>();
}
- Collections.emptyList()와 달리 final 키워드가 없습니다. 즉, 객체 값 변경이 가능합니다.
- 객체를 받아 값을 변경해야하는 등의 추가 작업이 있는경우 사용하기 적합합니다.
정리
빈 컬렉션을 반환해야 할 땐 Collections.emptyList()를 사용하고 객체 같을 받아 변경 작업이 필요하다면 Lists.newArrayList()를 사용합니다.
참고
https://stackoverflow.com/questions/5552258/collections-emptylist-vs-new-instance
https://kth990303.tistory.com/281
https://velog.io/@ychxexn/Collections.emptyList-vs-new-ArrayList
728x90
'스터디 > JAVA' 카테고리의 다른 글
[JAVA] Mac homebrew 설치 및 사용 방법 (1) | 2024.01.27 |
---|---|
[JAVA] Fail-Fast 와 Fail-Safe (0) | 2023.08.17 |
[JAVA] CollectionUtils.isEmpty() 사용법 및 예시 (0) | 2023.02.12 |
[JAVA] StringUtils.isBlank()와 StringUtils.isEmpty() 차이 (0) | 2023.02.11 |
[JAVA] 자바 예외 처리 (Exception) (0) | 2021.08.20 |
댓글