JAVA
JAVA 9 - Collection Factory Method
pows1011
2023. 2. 20. 10:16
JAVA 9 버전 부터 Map이나 List에 대한 생성 방식을 기존의 set.add , list.add , map.put 으로 하나하나씩 선언 하는 방식
// 변경전
Set<String> set = new HashSet<>();
set.add("제이든");
set.add("Jayden");
List<String> list = new ArrayList<>();
list.add("제이든");
list.add("버나드");
list.add("자이노");
list.add("메이슨");
list.add("엘빈");
Map<String, String> map = new HashMap<>();
map.put("J","Jayden");
map.put("B","Bernard");
map.put("Z","Zino");
map.put("M","Mason");
map.put("E","Elvin");
JAVA 9 버전 이후 도입된 Collection Factory Method 방식으로, 한번에 내가 작성하고자 하는 여러개의 값들을
동시에 선언시켜 줄 수 있게 되면서 조금 더 가독성이 높아지고 코드의 길이가 줄어드는 장점이 존재하지만
// 변경 후
Set<String> set = Set.of("제이든", "Jayden", "개발3팀");
List<String> list = List.of("제이든", "버나드", "자이노", "메이슨", "엘빈");
Map<String, String> map
= Map.of(
"J", "Jayden",
"B", "Bernard",
"Z", "Zino",
"M", "Mason",
"E", "Elvin");
Collection Factory Method 방식으로 선언할 경우의 단점도 존재하게 되는데 of 는 선언되는 순간 현재 만들어진 인자의 갯수에 맞춰 오버로딩이 되어 있는데, 그 갯수를 넘어가게되면 초기화가 불가능하다 (최대 10 개 ) 이런 경우에는ofEntries를 사용해야 한다.
또한 of나 ofEntries를 통해 객체를 초기화 할때 주의해야 할점이 더 있는데 Collection Factory Method는
Immutable 객체를 반환하여 초기화하고 난 이후에는 put이나 remove를 통해 객체의 데이터를 변경 시킬 수가 없다.
of메소드는 초기화 작업에서 굉장히 편리한 방법일 수는 있지만 , 단순히 초기화 한 후 값 조회만 하는 경우가 아니라면불변성을 가지고있는 of()나 ofEntries는 사용하지 않는게 좋은 방법이다.