我应该创建一个公共StudentDatabase(),它应该在不使用java api类或方法的情况下创建一个空数据库。应该有一种方法: public boolean add(String macid,int exam1,int exam2),它将记录添加到数据库中。如果MacID为macid的学生已经在数据库中,则此方法用exam1和考试2更新他/她的成绩并返回false;否则,它会将macid,exam1和exam2创建为数据库中的新记录并返回true。我已经走到了这一步:
public class StudentDatabase
{
public StudentDatabase()
{
Map<String, Set<int>> = new HashMap<String,List<int>>();
}
public boolean add(String macid, int exam1, int exam2)
{
remove(0);
return false;
}
public int getExam1(String macid)
{
if (sdb.macid("ID_") = macid);
else
return -1;
}
public int getExam2(String macid)
{
return -1;
}
public boolean remove(String macid)
{
if (StudentDatabase.macid == macid[]) {
for (int j = i; j < (size - 1); j++)
{
ARRAY[j] = ARRAY[j + 1]; //shift elements left
}
return true;
}
return false;
}
public int query(int exam1Low, int exam1High, int exam2Low, int exam2High)
{
return 0;
}
}
我不明白如何使用Map创建数据库。任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
我认为你没有正确考虑地图类。 我认为您应该将地图的创建更改为此。
Map<String,List<int>> index = new HashMap<String,List<int>>();
从那里你可以使用hashmap方法添加和删除学生。
HashMap API found here
这将是您的代码的开始
public boolean inIndex(String key)
{
return index.containsKey(key);
}
public void index(String val,int res1,int res2)
{
List<Integer> intList = new LinkedList<Integer>();
if(inIndex(val)==false)
{
index.put(val,intList);
}
index.get(val).add(res1);
index.get(val).add(res2);
}
}
答案 1 :(得分:0)
因为你知道考试的数量,你可能想要保存ExamRecord而不是整数列表
ExamRecord implements Comparable<ExamRecord>, Serializable {
private int exam1;
private int exam2;
public int compareTo(ExamRecord other) { }
public int hashCode() { }
}
Map<String, ExamRecord>
至于如何使用Map创建数据库,您需要一个名为“index”的文件,列出所有学生姓名(密钥),然后为每个学生创建一个与学生同名的文件(所以“约翰史密斯”被保存到“John Smith.dat”或“John_Smith.dat”或其他任何东西);这个文件包含学生的序列化ExamRecord,或者它包含一个考试分数列表(例如,如果学生的ExamRecord是exam1 = 50,exam2 = 80那么你会节省50; 80,然后你会将这些值解析回一个将数据库读回内存时的ExamRecord。
另一个选择是序列化/反序列化整个数据库,但如果你是为一个类项目做这个,那么教授可能会认为这是作弊。