java改变哈希映射的值
问题描述:
我有一个快速的问题,我在这里要做的是,从哈希映射中获得学生,并为学生的标记添加一个双标记。java改变哈希映射的值
可以说我有一个名为Student和Student类的类具有名为addToMark()和Hashmap的方法,名为theStudent = new HashMap<String, Student>
。
public void addExtraMark(String studentNumber, double mark) {
if(stuentNumber != null && mark >= 0) {
Student extraMark = theStudent.get(studentNumber);
extraMark.addToMark(mark)};
}
}
我的问题是,标记是否增加了散列表?自动?或者我必须使用
theStudent.put(studentNumber, extraMark);
我的代码底部?
答
由于Student extraMark
是对该学生的引用,因此对引用做的任何操作都将反映在HashMap中。
不,你没有拨打电话:
theStudent.put(studentNumber, extraMark);
答
在此代码:
Student extraMark = theStudent.get(studentNumber);
extraMark.addToMark(mark)}};
如果studentNumber
不散列图存在,get
回报null
。然后extraMark.addToMark
会抛出一个NullPointerException
。
所以,你必须检查自己,例如:
Student extraMark;
if (theStudent.containsKey(studentNumber)) {
extraMark = theStudent.get(studentNumber);
} else {
extraMark = new Student(.......);
theStudent.put(studentNumber, extraMark);
}
extraMark.addToMark(mark);
,或者你做get
第一和检查结果为null
。
注:我假设你的问题“确实增加了hashmap”意味着“如果它不在那里,它是否会向hashmap添加一个新学生”,但是在重读你的问题之后,米不清楚你的意思。