辞書の変更
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" は存在しません)チャレンジ
簡単特定の条件に基づいて、与えられた HashMap を変更する <strong>modifyMap</strong> という名前のメソッドを作成してください。
- 以下の
dataという名前の HashMap を受け取ります:- キーの型は
Stringです。 - 値の型は
Integerです。
- キーの型は
- String 型の
keyを受け取ります。 - 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));
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。