復習 - HashSet
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部 — レッスン 28/59。
チャレンジ
簡単3つの引数を受け取る processHashSet という名前のメソッドを作成してください:
- ObjectのHashSet (
set) - 処理対象のObject (
input) - 実行する操作を指定するString (
operation)
このメソッドは、高度な制御フロー(Advanced Control Flow)の概念を使用して、さまざまな操作を実行する必要があります:
操作(Switch式を使用):
- "add": セットに input を追加し、成功/失敗のメッセージを返します
- "remove": セットから input を削除し、成功/失敗のメッセージを返します
- "find": ラベル付きステートメントを使用してセット内の input を検索します
- "count":
instanceofを使用して Integer 型の要素の数をカウントします
ガード句(Guard Clauses)を使用して入力を検証し、エラーを処理してください:
- セットが null の場合: "Invalid set" を返します
- 操作が無効な場合: "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));
}
}