【发布时间】:2018-05-25 01:35:28
【问题描述】:
我正在尝试在 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();
如果我现在尝试打印到控制台,输出为空:
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());
}
}
我非常感谢任何关于此的 cmets 和建议,显然我一定做错了什么,但我不知道是什么:D
提前致谢!
【问题讨论】:
标签: java arraylist collections hashmap nested