HashMap一个元素的多个键

时间:2015-11-07 05:43:31

标签: java

我无法想到问题的更好的标题,但我的问题并不是将两个不同的键映射到一个值。我知道该怎么做。我的问题是,有没有办法让一个特定的键 - 键对映射到一个值?

例如,我正在尝试实施在线评分系统。该数据库的考试由考试键入。 "中期1"映射到Midterm1考试实例。每个考试都有一个解决方案手册。然后我想在数据库中添加学生的答题纸,并比较学生对解决方案手册的答案来计算分数。

我正在实施AnswerSheet类,并且被这个问题困扰了。学生的答案对应于某个考试中的某个问题。有没有办法让examId和questionNumber(合并)成为映射到学生写下的答案的关键?将问题编号映射到答案是不够的,因为中期1的问题1与期中考试的问题1不同。我试图想办法实现这个:

exam1 question1 ---------> "学生回答考试1"

exam1 question5 ---------> "学生回答考试1"

exam2 question1 ---------> "学生回答考试2"

我希望我已经充分解释了我的难题。希望有人可以指出我正确的方向。

2 个答案:

答案 0 :(得分:1)

假设“考试”,“问题”和“学生答案”是通过ORM映射到数据库的对象,并且每个都有一个主键,您可以连接“考试”和“问题”的2个主键转换为字符串值,并使用此值存储“学生答案”。像这样:

{{1}}

请注意,如果您遇到主键号冲突,则需要前缀“EXAM:”和“QST:”。

答案 1 :(得分:0)

查看Guava中的课程Table

  

将一组有序键(称为行键和列键)与单个值相关联的集合。

如果您不想使用Guava,您可以使用List(例如ArrayList)来包含这两个键,然后使用该组合键来访问您的地图。请参阅List.equals(..)List.hashcode(),了解他们是否正确启用此功能。