You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Java中通过类方法向HashMap添加Task并实现ID自增的问题

没问题,我帮你把这个任务管理的逻辑完整实现出来,完全符合你的需求!先看完整代码,再给你拆解关键要点:

完整实现代码

Task类

首先定义Task类,包含你需要的三个String类型实例变量,再加上构造方法方便创建实例:

public class Task {
    private String name;
    private String date;
    private String time;

    // 构造方法:初始化任务的名称、日期、时间
    public Task(String name, String date, String time) {
        this.name = name;
        this.date = date;
        this.time = time;
    }

    // 可选:添加getter方法,方便后续获取任务属性
    public String getName() { return name; }
    public String getDate() { return date; }
    public String getTime() { return time; }
}

WhatsHappening类

这是核心类,包含静态的TaskId、存储任务的Map,以及你需要的addTask方法:

import java.util.HashMap;
import java.util.Map;

public class WhatsHappening {
    // 静态TaskId:作为Map的键,初始值设为1
    public static int TaskId = 1;
    // 静态Map:用TaskId作为键,存储对应的Task实例
    private static Map<Integer, Task> taskMap = new HashMap<>();

    // 你需要的addTask方法:接收三个String参数,添加任务并自增TaskId
    public void addTask(String name, String date, String time) {
        // 创建新的Task对象
        Task newTask = new Task(name, date, time);
        // 将任务存入Map,键为当前的TaskId
        taskMap.put(TaskId, newTask);
        // 任务添加完成后,自动递增TaskId
        TaskId++;
    }

    // 可选:添加根据ID获取任务的方法,方便验证
    public static Task getTaskById(int taskId) {
        return taskMap.get(taskId);
    }

    // 可选:打印所有任务的方法,用于测试功能
    public static void printAllTasks() {
        for (Map.Entry<Integer, Task> entry : taskMap.entrySet()) {
            System.out.println("任务ID: " + entry.getKey());
            Task task = entry.getValue();
            System.out.println("任务名称: " + task.getName());
            System.out.println("日期: " + task.getDate());
            System.out.println("时间: " + task.getTime());
            System.out.println("------------------------");
        }
    }
}

测试示例

可以写个测试类验证功能是否正常:

public class TaskTest {
    public static void main(String[] args) {
        WhatsHappening taskManager = new WhatsHappening();
        
        // 添加第一个任务
        taskManager.addTask("完成StackOverflow回答", "2024-05-20", "14:30");
        // 添加第二个任务
        taskManager.addTask("整理笔记", "2024-05-21", "10:00");
        
        // 打印所有任务,验证TaskId是否正确自增
        WhatsHappening.printAllTasks();
    }
}

运行这个测试类,输出会是:

任务ID: 1
任务名称: 完成StackOverflow回答
日期: 2024-05-20
时间: 14:30
------------------------
任务ID: 2
任务名称: 整理笔记
日期: 2024-05-21
时间: 10:00
------------------------
关键要点说明
  • 静态变量TaskId:属于WhatsHappening类本身,所有该类的实例共享这个值,保证每次添加任务时键的唯一性,添加后自增1。
  • HashMap存储任务:用TaskId作为键可以快速查找对应任务,符合你的需求。
  • addTask方法逻辑:接收参数→创建Task实例→存入Map→自增TaskId,流程清晰直接。

内容的提问来源于stack exchange,提问作者Os9008

火山引擎 最新活动