2016-05-17 4 views
0

У меня быстрый вопрос, что я пытаюсь сделать здесь, чтобы получить Студент из HashMap и добавляет двойную метку к метке Студента.java изменение значения hashmap

позволяет сказать, что у меня есть класс под названием Student и Student class, который имеет метод 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)}; 
    } 
} 

мой вопрос, маркировка добавляет к hashmap? автоматически? или я должен использовать

theStudent.put(studentNumber, extraMark); 

на нижней части моего кода?

ответ

2

С Student extraMark является ссылкой на этот Студент, все, что вы делаете со ссылкой, будет отражено в HashMap.

Нет, вы не должны сделать вызов:

theStudent.put(studentNumber, extraMark); 
1

В этом коде:

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, если бы не было уже там», но перечитав свой вопрос, я Не понятно, что вы имели в виду.

Смежные вопросы