Java

[Java] List, Map 정적 팩토리 메소드

snail voyager 2023. 9. 10. 15:34
728x90
반응형

컬렉션 팩토리

  • 자바 9에서는 컬렉션 객체를 쉽게 만들 수 있는 방법을 제공
  • 고정 크기의 리스트를 만들었으므로 요소를 갱신할 수 있지만 추가하거나 삭제 불가 (UnsupportedOperationException 발생)
List<String> friends = Arrays.asList("A", "B", "C");

List 정적 팩토리 메소드

  • List.of 팩토리 메소드로 변경할 수 없는 리스트 생성
  • 요소를 추가하려면 UnsupportedOperationException 발생
  • set() 메서드로 변경하려해도 예외 발생
  • null 요소는 금지하므로 의도치 않은 버그를 방지
  • List.of 팩토리 메소드는 다양한 오버로드 버전 (최대 10개까지)
  • 10개 이상의 요소는 가변인수 버전의 팩토리 메소드 사용
    추가 배열을 할당해서 리스트로 감싸기 때문에 리소스 낭비
List<String> friends = List.of("A", "B", "C");
friends.add("D");	//UnsupportedOperationException

Map 정적 팩토리 메소드

  • Map.of 팩토리 메서드에 키와 값을 번갈아 제공하는 방법으로 생성
  • 10개 초과 요소는 Map.ofEntries 메소드 이용
    키와 값을 감쌀 추가 객체 할당
  • Map.entry는 Map.Entry 객체를 만드는 팩토리 메소드
Map<String, Integer> ageOfFriends = Map.of("A", 20, "B", 21, "C", 25);
//{A=20, B=21, C=25}

ageOfFriends = Map.ofEntries(Map.entry("A", 30),
        Map.entry("B", 31),
        Map.entry("C", 33));
//{A=30, B=31, C=33}

 

728x90
반응형