요약 - HashSet
Coddy Java 여정의 논리와 흐름 섹션에 포함된 레슨 — 59개 중 28번째.
챌린지
쉬움세 개의 인자를 받는 processHashSet이라는 이름의 메서드를 생성하세요:
- 객체들의 HashSet (
set) - 처리할 객체 (
input) - 수행할 작업을 지정하는 문자열 (
operation)
이 메서드는 고급 제어 흐름(Advanced Control Flow) 개념을 사용하여 다양한 작업을 수행해야 합니다:
작업 (Switch Expression 사용):
- "add": set에 input을 추가하고 성공/실패 메시지를 반환합니다.
- "remove": set에서 input을 제거하고 성공/실패 메시지를 반환합니다.
- "find": 레이블 문(label statements)을 사용하여 set에서 input을 검색합니다.
- "count":
instanceof를 사용하여 Integer 타입인 요소의 개수를 셉니다.
입력을 검증하고 에러를 처리하기 위해 보호 절(Guard Clauses)을 사용하세요:
- set이 null인 경우: "Invalid set"을 반환합니다.
- operation이 유효하지 않은 경우: "Invalid operation"을 반환합니다.
- "find" 작업에서 input이 null인 경우: "Cannot find null"을 반환합니다.
직접 해보기
import java.util.HashSet;
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static String processHashSet(HashSet<Object> set, Object input, String operation) {
// 여기에 코드를 작성하세요
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 초기 집합 읽기
String[] items = scanner.nextLine().split(",");
HashSet<Object> set = new HashSet<>();
if (!items[0].equals("empty")) {
for (String item : items) {
// 먼저 정수로 파싱 시도
try {
set.add(Integer.parseInt(item));
} catch (NumberFormatException e) {
set.add(item);
}
}
}
// 입력 읽기
String inputStr = scanner.nextLine();
Object input;
try {
input = Integer.parseInt(inputStr);
} catch (NumberFormatException e) {
input = inputStr;
}
// 연산 읽기
String operation = scanner.nextLine();
System.out.println(processHashSet(set, input, operation));
}
}