辞書の変更
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を変更する、modifyMapという名前のメソッドを記述してください。
- 次の内容を持つ
dataという名前のHashMapを受け取ります。- キーの型は
Stringです。 - 値の型は
Integerです。
- キーの型は
keyというStringを受け取ります。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));
}
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Javaオンラインコンパイラ