자바 - 컬렉션 팩토리 메서드

안녕하세요, 미래의 자바 프로그래머 여러분! 오늘은 자바에서 흥미로운 컬렉션 팩토리 메서드의 세계에 빠지기 위해 준비해봅시다. 여러분의 친절한 이웃 컴퓨터 교사로서, 저는 여러분을 이 여정을 걸어갈 때 단계별로 안내해 드리겠습니다. 그럼, 좋아하는 음료수를 들고 편하게 앉아 이 코드 모험을 함께 시작해봅시다!

Java - Collection Factory Methods

컬렉션 팩토리 메서드 소개

자세히 들어가기 전에 간단한 비유로 시작해볼까요? 파티를 계획하고 있다고 상상해봅시다. (누구를 위해 좋은 파티를 싫어하시나요, right?). 손님 명단을 만들고, 파티 게임 세트를 결정하고, 누가 어떤 요리를 가져올지의 맵을 만들어야 합니다. 자바에서는 이런 종류의 정보를 정리하기 위해 컬렉션을 사용하며, 팩토리 메서드는 여러분의 파티 계획 어시스턴트처럼 도와서 이러한 컬렉션을 빠르고 쉽게 만들어줍니다!

리스트 인터페이스의 팩토리 메서드

리스트부터 시작해볼게요. 자바에서는 리스트는 파티의 손님 명단과 같은 순서 있는 요소 컬렉션입니다.

빈 리스트 생성

List<String> emptyGuestList = List.of();
System.out.println("Empty guest list: " + emptyGuestList);

이렇게 하면 빈 리스트를 만듭니다. 아무도 초대하기 전에 빈 손님 명단으로 시작하는 것과 같아요.

요소가 있는 리스트 생성

List<String> guestList = List.of("Alice", "Bob", "Charlie");
System.out.println("Guest list: " + guestList);

여기서 우리는 세 명의 손님으로 구성된 리스트를 만들었습니다. 그렇게 간단합니다! new ArrayList<>()를 사용하고 요소를 하나씩 추가할 필요가 없습니다.

불변 리스트를 수정하려고 시도하는 경우

try {
guestList.add("David");
} catch (UnsupportedOperationException e) {
System.out.println("죄송합니다! 이 리스트를 수정할 수 없습니다. 이미 마무리되었습니다!");
}

이것은 예외를 발생시킵니다. List.of()로 만든 리스트는 불변입니다. 이미 인쇄되고 분배된 명단에 손님을 추가하려고 시도하는 것과 같아요!

셋 인터페이스의 팩토리 메서드

이제 셋에 대해 이야기해볼게요. 셋은 중복 요소가 없는 컬렉션이며, 파티 게임에서 각 게임이 독특해야 한다는 것에 완벽합니다.

빈 셋 생성

Set<String> emptyGameSet = Set.of();
System.out.println("Empty game set: " + emptyGameSet);

이렇게 하면 빈 게임 셋을 만듭니다. 아직 게임을 결정하지 않은 게임 날을 계획하고 있다는 것과 같아요.

요소가 있는 셋 생성

Set<String> gameSet = Set.of("Charades", "Twister", "Pictionary");
System.out.println("Game set: " + gameSet);

이제 파티에 세 가지 게임을 결정했습니다. 셋은 중복을 허용하지 않으므로 "Charades"를 두 번 추가해도 한 번만 나타납니다.

중복 요소를 추가하려고 시도하는 경우

try {
Set<String> duplicateSet = Set.of("Charades", "Twister", "Charades");
} catch (IllegalArgumentException e) {
System.out.println("죄송합니다! 셋에는 중복된 게임이 없습니다!");
}

이것은 예외를 발생시킵니다. 셋은 중복을 허용하지 않습니다. 같은 밤에 "Charades"를 두 번 제안하려고 시도하는 것과 같아요 - 한 번은 충분합니다!

맵 인터페이스의 팩토리 메서드

마지막으로 맵에 대해 탐구해볼게요. 맵은 키-값 쌍의 컬렉션이며, 포트란 파티에서 누가 어떤 요리를 가져올지 추적하는 데 완벽합니다.

빈 맵 생성

Map<String, String> emptyPotluckMap = Map.of();
System.out.println("Empty potluck map: " + emptyPotluckMap);

이렇게 하면 빈 맵을 만듭니다. 포트란 싸인업 시트와 같은 빈 시트를 시작하는 것과 같아요.

요소가 있는 맵 생성

Map<String, String> potluckMap = Map.of(
"Alice", "Salad",
"Bob", "Chips",
"Charlie", "Dessert"
);
System.out.println("Potluck map: " + potluckMap);

이제 우리는 손님에게 요리를 할당했습니다. Alice는 샐러드를, Bob은 칩을, Charlie는 디저트를 가져옵니다.

중복 키를 추가하려고 시도하는 경우

try {
Map<String, String> duplicateMap = Map.of(
"Alice", "Salad",
"Bob", "Chips",
"Alice", "Dessert"
);
} catch (IllegalArgumentException e) {
System.out.println("죄송합니다! Alice는 두 가지 요리를 가져올 수 없습니다!");
}

이것은 예외를 발생시킵니다. 맵은 중복 키를 허용하지 않습니다. Alice에게 두 가지 요리를 할당하려고 시도하는 것과 같아요 - 그녀는 이미 정말 맛있는 샐러드를 만들고 있습니다!

컬렉션 팩토리 메서드 비교

우리가 배운 팩토리 메서드를 손쉽게 정리한 표를 살펴보겠습니다:

컬렉션 유형 팩토리 메서드 예시
List List.of() List.of("Alice", "Bob", "Charlie")
Set Set.of() Set.of("Charades", "Twister", "Pictionary")
Map Map.of() Map.of("Alice", "Salad", "Bob", "Chips")

결론

그렇게 끝났습니다, 여러분! 우리는 자바에서 컬렉션 팩토리 메서드의 땅을 거쳤습니다. 이 메서드들은 빠르고 쉽게 불변 컬렉션을 만드는 데 매우 유용합니다. 단순히 읽기 전용 컬렉션의 요소들을 필요할 때 매우 좋습니다.

기억해요, 이 컬렉션들은 불변하지만 매우 유용합니다. 여러분의 파티의 VIP 손님 명단과 같습니다 - 일단 설정되면 변경되지 않아서 모든 것이 원활하게 진행됩니다.

여러분이 자바 모험을 계속할 때, 더 많은 흥미로운 기능을 탐구할 수 있을 것입니다. 하지만 지금은 자신을 칭찬해봅시다 - 여러분은 방금 프로그래밍 도구킷에 강력한 도구를 추가했습니다!

코딩을 계속하고, 계속 배우며, 가장 중요한 것은 자바와 함께 즐겁게 보내세요. 다음 번에 다시 만나요, 여러분의 친절한 이웃 컴퓨터 교사로서 서명하며. 해피 코딩!

Credits: Image by storyset