8.1 컬렉션 팩토리

Arrays.asList() 팩토리 메서드를 이용하여 요소를 간단하게 추가할 수 있다.

List<String> friends = Arrays.asList("Raphael", "Olivia", "Thibaut");

고정 크기의 리스트를 만들었기 때문에 요소를 갱신할 수는 있지만 새로운 요소를 추가하거나 요소를 삭제할 순 없다. 새로운 요소를 추가하면 UnsupportedOperationException이 발생한다.

friends.set(0, "Richard"); // 갱신
friends.add("Thibaut"); // 추가 -> 에러

리스트를 인수로 받는 HashSet 생성자를 이용해보자.

Set<String> friends = new HashSet<>(Arrays.asList("Raphael", "Olivia", "Thibaut"));
// 스트림 사용
Set<String> friends
	= Stream.of("Raphael", "Olivia", "Thibaut")
					.collect(Collectors.toSet());

하지만 두 방법 모두 내부적으로 불필요한 객체 할당을 필요로 한다.

8.1.1 리스트 팩토리

List.of 팩토리 메서드를 이용해서 간단하게 리스트를 만든 후, 해당 리스트에 요소를 추가하려하면 Exception이 발생한다. 이는 변경할 수 없는 리스트가 만들어졌기 때문이다. 갱신도 마찬가지이다.

Collectors.toList() 컬렉터로 스트림을 리스트로 바꿀 수 있다.

8.1.2 집합 팩토리

집합은 오직 고유의 요소만 포함할 수 있다.

Set<String> friends = Set.of("Raphael", "Olivia", "Thibaut");

8.1.3 맵 팩토리