Menu
Coddy logo textTech

辞書の変更

CoddyのJavaジャーニー「ロジックとフロー」セクションの一部 — レッスン 14/59。

HashMapは、put()remove()、およびreplace()メソッドを使用したエントリの削除や更新もサポートしています。

例えば、まずHashMapにデータを格納してみましょう:

HashMap<String, String> users = new HashMap<>();
users.put("alice", "Admin");
users.put("bob", "User");

キーを削除するには:

users.remove("bob"); // "bob" を削除します
System.out.println(users);
// {alice=Admin}

キーを更新するには:

users.replace("alice", "Guest");
// aliceをGuestに更新します

users.replace("Charlie", "Admin");
// 何もしません(キー "Charlie" は存在しません)
challenge icon

チャレンジ

簡単

特定の条件に基づいて、与えられた HashMap を変更する <strong>modifyMap</strong> という名前のメソッドを作成してください。

  1. 以下の data という名前の HashMap を受け取ります:
    • キーの型は String です。
    • 値の型は Integer です。
  2. String 型の key を受け取ります。
  3. Integer 型の newValue を受け取ります。

メソッドは、以下の手順に従って更新された HashMap を返す必要があります:

  • data 内にキーが存在し、その値が newValue同じ場合<strong>replace()</strong> を使用して値を 1 増やします
  • キーは存在する値が異なる場合、そのキーを削除します
  • キーが存在しない場合、そのキーを newValue と共に追加します

自分で試してみよう

// --- hashmap の文字列を hashmap に変換するためのモジュール ---
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
// -----------------------------
import java.util.HashMap;
import java.util.Scanner;

public class Main {
    public static HashMap<String, Integer> modifyMap(HashMap<String, Integer> data, String key, int newValue) {
        // ここにコードを書いてください
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String hashMapString = scanner.nextLine();
        String key = scanner.nextLine();
        int newValue = scanner.nextInt();

        // HashMap の文字列を HashMap に変換する
        Type mapType = new TypeToken<HashMap<String, Integer>>(){}.getType();
        HashMap<String, Integer> data = new Gson().fromJson(hashMapString, mapType);

        HashMap<String, Integer> result = modifyMap(data, key, newValue);
        System.out.println(new Gson().toJson(result));
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン