Java7下遍历多值键HashMap,查询待办事项今日到期任务
嘿,我来帮你搞定这两个Java 7的集合作业需求!咱们一步步来拆解:
第一步:先把多值HashMap的结构理清楚
Java 7本身没有原生支持「一个键对应多个值」的Map,所以咱们通常会用HashMap<String, List<Task>>这种嵌套结构——这里建议你先封装一个Task类来管理任务的三个属性(任务内容、执行时间、执行日期),这样后续遍历和筛选会方便很多,也符合面向对象的思路:
class Task { private String job; private String time; private String date; // 构造方法 public Task(String job, String time, String date) { this.job = job; this.time = time; this.date = date; } // 手动写getter方法(Java7没有Lombok,得自己实现) public String getJob() { return job; } public String getTime() { return time; } public String getDate() { return date; } }
之后你的任务Map就可以定义成HashMap<String, List<Task>> taskMap;——这里的键可以根据你的需求选(比如按日期分组、按类别分组都可以),不影响后续的遍历和筛选逻辑。
第二步:遍历多值HashMap的两种常用方式
针对这种嵌套的Map,Java 7里有两种简单的遍历方式:
方式1:遍历EntrySet(最推荐)
直接拿到Map里的每一组「键-值列表」,然后逐个处理:
for (Map.Entry<String, List<Task>> entry : taskMap.entrySet()) { String key = entry.getKey(); List<Task> tasksUnderKey = entry.getValue(); System.out.println("当前键:" + key); // 遍历该键对应的所有任务 for (Task task : tasksUnderKey) { System.out.println("任务:" + task.getJob() + " | 时间:" + task.getTime() + " | 日期:" + task.getDate()); } }
方式2:先遍历键,再取值
如果只关心任务内容,也可以先拿到所有键,再逐个获取对应的任务列表:
for (String key : taskMap.keySet()) { List<Task> tasks = taskMap.get(key); // 这里同样可以遍历tasks列表处理每个任务 }
第三步:筛选今日到期的任务
结合你现有的today实例变量,咱们可以在遍历的时候加入判断逻辑,把符合条件的任务筛选出来:
// 先准备一个集合存今日到期的任务 List<Task> todayDueTasks = new ArrayList<Task>(); // 遍历整个Map的所有任务 for (Map.Entry<String, List<Task>> entry : taskMap.entrySet()) { List<Task> tasks = entry.getValue(); for (Task task : tasks) { // 关键:对比任务日期和today是否一致(注意格式要完全相同,比如都是"yyyy-MM-dd") if (today.equals(task.getDate())) { todayDueTasks.add(task); } } } // 输出筛选结果 System.out.println("今日到期的任务清单:"); for (Task task : todayDueTasks) { System.out.println("- " + task.getJob() + ",执行时间:" + task.getTime()); }
小提醒:
- 一定要保证
today和task.getDate()的日期格式完全统一,比如都是"2024-05-20"这种字符串格式,否则equals()会判断不相等。如果你的日期是用Date类型存储的,直接用task.getDate().equals(today)就好,别转字符串避免时区坑。 - 如果你之前没封装Task类,而是直接把任务信息拼接成字符串存在List里,那筛选时还要拆分字符串,会很麻烦,所以封装Task类是更优的选择哦。
内容的提问来源于stack exchange,提问作者Paul Harper
相关产品推荐
相关产品推荐

