如何使用带有两个int值和一个字符串键的map

时间:2013-04-24 23:38:28

标签: java arrays boolean hashcode

我应该创建一个公共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创建数据库。任何帮助将不胜感激。谢谢

2 个答案:

答案 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。

另一个选择是序列化/反序列化整个数据库,但如果你是为一个类项目做这个,那么教授可能会认为这是作弊。