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

挑战

简单

编写一个名为 modifyMap 的方法,根据特定条件修改给定的 HashMap。

  1. 接收一个名为 data 的 HashMap,其中:
    • 键的类型为 String。
    • 值的类型为 Integer。
  2. 接收一个 String 类型的 key。
  3. 接收一个 Integer 类型的 newValue。

该方法应按以下规则返回更新后的 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 字符串转换为 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 在线编译器