请教一个Java问题,想了好几天一直做不出来!

图片说明
我将文件读出来存放在arrayList集合中,但是遍历输出的结果总是重复。
请教这道题应该怎么做?

建议你使用Map键值对来读取数据,即将姓名作为标志键,新建一个类grade,将学科和分数保存到grade中
Map> grade = new HashMap>();

public class Grade {

private String subject;
private String score;


public Grade(String subject, String score) {
    super();
    this.subject = subject;
    this.score = score;
}
public String getSubject() {
    return subject;
}
public void setSubject(String subject) {
    this.subject = subject;
}
public String getScore() {
    return score;
}
public void setScore(String score) {
    this.score = score;
}

}


打印至控制台使用format格式化输出,就ok了,

 其实就是HashMap的嵌套。
HashMap<String, HashMap<String, ArrayList>> map
外侧的Hashmap的Key是姓名,值是一个Hashmap
这个Hashmap的Key是科目,值是一个ArrayList
每个List的值是一个分数
遍历你的文件,先找外侧的Hashmap有没有名字,没有就新建一个,否者找到对应的Hashmap
再找有没有科目,有的话,把分数添加上

输出的时候遍历外侧msp得到姓名,每个姓名得到科目,每个科目再根据ArrayList算出平均分。