辞書の変更
CoddyのJavaジャーニー「ロジックとフロー」セクションの一部 — レッスン 14/59。
HashMaps は、キーの削除とそれらの更新をサポートするメソッドとして put()、remove()、および replace() も提供します。
例えば、まず HashMap に要素を追加してみましょう:
HashMap<String, String> users = new HashMap<>();
users.put("alice", "Admin");
users.put("bob", "User");キーを削除するには:
users.remove("bob"); // Removes "bob"
System.out.println(users);
// {alice=Admin}キーを更新するには:
users.replace("bob", "Guest");
// Updates bob to Guest
users.replace("Charlie", "Admin");
// Does nothing (key "Charlie" doesn't exist)チャレンジ
簡単<strong>modifyMap</strong> という名前のメソッドを書きなさい。このメソッドは、指定された条件に基づいて与えられた HashMap を変更します。
dataという名前の HashMap を受け取ります。この HashMap では:- キーは
String型です。 - 値は
Integer型です。
- キーは
- String 型の
keyを受け取ります。 - Integer 型の
newValueを受け取ります。
このメソッドは、以下の手順に従って更新された HashMap を返します:
dataにキーが存在し、newValueと同じ値を持つ場合、<strong>replace()</strong>を使用して値を 1 増やします。- キーが存在するが異なる値を持つ場合、それを削除します。
- キーが存在しない場合、
<strong>newValue</strong>で追加します。
チートシート
データの変更のための HashMap メソッド:
キーを削除:
users.remove("bob"); // "bob" のキー・バリュー対を削除値を更新/置換:
users.replace("alice", "Guest"); // 既存のキーを更新
users.replace("nonexistent", "Admin"); // キーが存在しない場合、何もしませんキーを追加または更新:
users.put("newUser", "Admin"); // 新しいキーを追加または既存のものを更新自分で試してみよう
// --- ハッシュマップの文字列をハッシュマップに変換するためのモジュール ---
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));
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。