首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个元素的HashMap多个键

一个元素的HashMap多个键
EN

Stack Overflow用户
提问于 2015-11-07 05:43:30
回答 2查看 276关注 0票数 0

对于这个问题,我想不出更好的标题,但我的问题并不是将两个不同的键映射到一个值。我知道怎么做。我的问题是,是否有一种方法可以将特定的密钥对映射到某个值?

例如,我正在尝试实现一个在线评分系统。这个数据库有他们的examId输入的考试。“期中1”映射到Midterm1考试实例。每一次考试都有一个解决方案手册。然后,我想添加一个学生的答题表到数据库,并比较学生的答案与解决方案手册,以计算分数。

我正在实现AnswerSheet类,并且对这个问题感到困惑。学生的答案与某一考试中的某一题相对应。有没有办法让examId和questionNumber (合并)成为映射到学生写下的答案的关键?仅仅将问题号映射到答案是不够的,因为期中1的问题1与期中2的问题1不一样。我想出一种方法:

exam1 question1

exam1 question5

exam2 question1

我希望我已经充分解释了我的难题。希望有人能给我指明正确的方向。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-07 07:54:54

查看番石榴中的表格类。

一个集合,它将有序的一对键(称为行键和列键)与单个值关联起来。

如果不想使用番石榴,只需使用一个列表(如ArrayList)来包含这两个键,然后使用该复合键访问您的映射。请参阅List.equals(.)List.hashcode(),以确保它们为启用此功能做了正确的工作。

票数 0
EN

Stack Overflow用户

发布于 2015-11-07 05:58:02

假设“考试”、“问题”和“学生回答”是通过ORM映射到数据库的对象,并且每个对象都有一个主键,则可以将“that”和“问句”的两个主键串联到一个字符串值中,并使用该值存储“学生答案”。就像这样:

代码语言:javascript
复制
//built a hash key using primary keys of objects
String hkey= "EXAM:" + exam.examId().toString() + 
             "-QST:" + question.questionId().toString();

map.put(hkey, studentAnswer);

请注意,您需要前缀“that:”和"QST:“,以防发生主键号冲突。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33579566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档