Menu
CoddyTech

辞書の変更

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を変更する、modifyMapという名前のメソッドを記述してください。

  1. 次の内容を持つdataという名前のHashMapを受け取ります。
    • キーの型はStringです。
    • 値の型はIntegerです。
  2. keyというStringを受け取ります。
  3. newValueというIntegerを受け取ります。

次の条件に従って更新したHashMapを返すようにしてください。

  • dataにキーが存在し、その値がnewValueと同じ値の場合、replace()を使用しますが、値を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のStringを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腕試し

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

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

自分で練習してみよう: Javaオンラインコンパイラ