我尝试在java中设置HashMap值,同时尝试重用arrayList。我以前没有使用过HashMaps,现在仍在思考这个问题,所以请容忍我有限的知识。
班级学生:
public class Student {
private static int id = 0;
private String name;
private String surname;
private Map<Subject, List<Grade>> grades;
private List<Absence> absences;
}
等级设置器:
public void setGrades(Map<Subject, List<Nota>> grades) {
this.grades = grades;
}
课程主题:
public class Subject {
private String name;
}
班级等级:
public class Grade {
private Term term;
private String letter;
}
主程序:
Subject subject = new Subject("History");
Map<Subject, List<Grade>> gradeMap = new HashMap<Subject, List<Grade>>();
List <Grade> grades = new ArrayList<Grade>();
grades.add(new Grade(Term.FIRST_TERM, 'A'));
grades.add(new Grade(Term.SECOND_TERM, 'F'));
grades.add(new Grade(Term.THIRD_TERM, 'B'));
gradeMap.put(subject, grades);
student1.setGrades(gradeMap);
测试打印键和值:
for(Map.Entry<Subject, List<Grade>> t :student1.getGrades().entrySet()){
Subject key = t.getKey();
for (Grade grade : t.getValue()) {
System.out.println(key.getName() + " - " + grade.getNumber());
}
}
但每当我尝试重新利用ArrayList时,由于有许多学生的成绩需要设置,我就会丢失student1实例中的所有数据
grades.clear();
如果我现在尝试打印到控制台,则输出为空:
对于(地图条目<主题,列表<等级>t:student1.getGrades()。entrySet()){
主题键=t.getKey();
for(等级等级:t.getValue()){
系统出来println(key.getName()+“-”+等级。getNumber());
}
}
我真的很感激你对此提出任何意见和建议,很明显我一定是做错了什么,但我不知道是什么:D
提前感谢!