对于这个问题,我想不出更好的标题,但我的问题并不是将两个不同的键映射到一个值。我知道怎么做。我的问题是,是否有一种方法可以将特定的密钥对映射到某个值?
例如,我正在尝试实现一个在线评分系统。这个数据库有他们的examId输入的考试。“期中1”映射到Midterm1考试实例。每一次考试都有一个解决方案手册。然后,我想添加一个学生的答题表到数据库,并比较学生的答案与解决方案手册,以计算分数。
我正在实现AnswerSheet类,并且对这个问题感到困惑。学生的答案与某一考试中的某一题相对应。有没有办法让examId和questionNumber (合并)成为映射到学生写下的答案的关键?仅仅将问题号映射到答案是不够的,因为期中1的问题1与期中2的问题1不一样。我想出一种方法:
exam1 question1
exam1 question5
exam2 question1
我希望我已经充分解释了我的难题。希望有人能给我指明正确的方向。
发布于 2015-11-07 07:54:54
查看番石榴中的表格类。
一个集合,它将有序的一对键(称为行键和列键)与单个值关联起来。
如果不想使用番石榴,只需使用一个列表(如ArrayList)来包含这两个键,然后使用该复合键访问您的映射。请参阅List.equals(.)和List.hashcode(),以确保它们为启用此功能做了正确的工作。
发布于 2015-11-07 05:58:02
假设“考试”、“问题”和“学生回答”是通过ORM映射到数据库的对象,并且每个对象都有一个主键,则可以将“that”和“问句”的两个主键串联到一个字符串值中,并使用该值存储“学生答案”。就像这样:
//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:“,以防发生主键号冲突。
https://stackoverflow.com/questions/33579566
复制相似问题