【发布时间】:2018-04-03 15:28:28
【问题描述】:
我目前正在大学学习集合和地图(仍在使用 Java 7)。
他们给了我们一个完成了一半的待办事项列表应用程序。目前待办事项列表采用三个字符串局部变量来允许用户声明工作 (aJob)、执行时间 (aTime) 和执行日期 (aDate)。
该应用程序还有一个实例变量(今天)保存今天的日期。
我需要想出一种方法来检查 HashMap 是否有任何今天到期的任务。所以我需要能够只查询 aDate 局部变量所赋予的 HashMap 值。
我知道要迭代 Maps,我可以将键或值放入 Set 中,然后迭代该集合 - 这不是问题。但是,如果我使用 values() 方法(在 Map 类中)将它们放入一个集合中 - 它会将每个键的所有三个字符串放入集合中。我只想将 aDate 值移动到一个集合中。
有什么想法吗?
我似乎只能找到地图只有一个键和一个值的例子。这个列表有一个键和每个键三个值。
任何指针都会很好?
亲切的问候
编辑.....
只是想我会添加一些代码来提供帮助,因为有几种不同的方法 - 我都非常感激。但不确定它们是否适合我的需求....
作业类是这样构造的......
public Job(String aJob, String aDate, String aTime)
{
Job = aJob;
date = aDate;
time = aTime;
}
然后我在 To Do List 类的实例声明中创建地图......
Map<Integer, Job> toDoList = new HashMap<>();
所以我需要知道迭代此地图的最佳方法,但只有 Job 属性“aDate”可能会保留我所追求的值。
不确定这是否有帮助?
亲切的问候
【问题讨论】:
-
听起来您正在寻找
Map<K, Set<V>>或 GuavaSetMultimap。 github.com/google/guava/wiki/… -
地图怎么样
> -
那么aJob 是
String还是Job?您的指示非常不清楚且自相矛盾,“不能选择创建新课程”,但在这里您使用Job作为地图中值的类型。事实上,你的构造函数根本没有意义,用String aJob,然后Job = aJob... -
道歉。希望这可以解决问题。我无法创建任何其他课程,但我们被分配了“作业”课程以作为作业的一部分来完成。所以我们总共有两个类。工作类和待办事项类。 Job 类首先通过在构造函数中采用三个 String 参数来创建。我需要查询 Job 类构造函数中的 aDate String 以查看它是否与今天的日期匹配。
-
这样的话,托伊森的回答基本上就是你该做的了。只需将
Tuple替换为Job。