学生評価のジャーナルがあるとします。それぞれの学生は、各科目のいくつかのマークをジャーナルに入れています。私はこれをHashMap<>
に保存したいのですが、なぜマークを組み合わせるのか分かりません。メインクラスでjava-content HashMapの適切なデータ
public class Journal {
private static HashMap<String, HashMap<String, ArrayList<Integer>>> journal = new HashMap<>(); // "Student" -> "Subject", mark[]
private HashMap<String, ArrayList<Integer>> journalContainer = new HashMap<>();
private ArrayList<Integer> marks = new ArrayList<>();
public void addMark(String student, String subject, int mark) {
marks.add(mark);
journalContainer.put(subject, mark);
journal.put(student, journalContainer);
}
public static void outputMarks() {
for(HashMap.Entry<String, HashMap<String, ArrayList<Integer>>> entry : journal.entrySet())
{
System.out.println(entry.getKey() + "/" + entry.getValue());
}
}
}
:ジャーナルクラスで
Alex/{english=[4, 2, 2, 2], math=[4, 2, 2, 2]}
George/{english=[4, 2, 2, 2], math=[4, 2, 2, 2]}
しかし、右の出力は次のようになります:
public class Main {
public static void main(String[] argc) {
getJournal().addMark("Alex", "math", 4); // name, subject, mark
getJournal().addMark("Alex", "math", 2);
getJournal().addMark("George", "english", 2);
getJournal().addMark("George", "english", 2);
Journal.outputMarks();
}
}
ので、出力され
Alex/{math=[4, 2]}
George/{english=[2, 2]}
私は何が間違っているのか分かりません。誰でも助けることができますか?
GuavaまたはApache Commonsのマルチマップの使用を検討してください。 –