Map实现一个键对应多个值

  方法:将多个值放在一个List中,然后把该List放在Map键所对应的值中。

  原因:Map有点儿类似于Set,当中放的元素是不重复的,所以当放了第一个键所对应的值之后,又想放第二个还是这个键对应的另外一个值,就会覆盖掉                  之前的值。

  例子:定义一个Student类,属性:name 姓名,classNumber 班号,score 成绩      要求:通过班级号得到该班级所有学生的总分和班级平均分

Student类里面的代码比较简单就不发出来,重点看看Clazz类(班级)

//班级类
public class Clazz {
    private int classNum;                        //班级号
    private ArrayList list = new ArrayList();    //每个班配一个集合来放学生
    //构造器
    public Clazz(int n){
        super();
        classNum = n;
    }
    //添加学生
    public void addStudent(Student s){
        list.add(s);
    }
    
    //得到学生序列
    public ArrayList getStudentList(){
        return list;
    }
    
    //班上学生总分
    public int getSumScores(){
        int sum = 0;
        for (Object object : list) {
            Student s = (Student)object;
            sum+=s.getScore();
        }
        return sum;
    }
    
    //班上学生平均分
    public double getAverageScore(){
        double average = 0;
        average = getSumScores()*1.0/list.size();
        return average;
    }
    //打印班级成绩信息
    public void printClassScore(int classNumber){
        HashMap map = new HashMap();
        //存入到map中   key为classNumber , values为班上学生总分
        map.put(classNumber,getSumScores());
        //输出
        System.out.println(classNumber+"班的总分为:"+map.get(classNumber)+"  平均分为:"+getAverageScore());
    }
}

然后再在主类里面测试就行

public class Test6 {

    public static void main(String[] args) {
        //创建相应班级
        Clazz c1 = new Clazz(1);
        Clazz c2 = new Clazz(2);
        //创建学生
        Student s1 = new Student("一班一号", 1, 60);    //姓名 班级 个人成绩
        Student s2 = new Student("一班二号", 1, 70);
        Student s3 = new Student("一班三号", 1, 80);
        Student s4 = new Student("二班四号", 2, 80);
        Student s5 = new Student("二班五号", 2, 80);
        Student s6 = new Student("二班六号", 2, 80);
        
        //添加学生到相应班级
        c1.addStudent(s1);
        c1.addStudent(s2);
        c1.addStudent(s3);
        
        c2.addStudent(s4);
        c2.addStudent(s5);
        c2.addStudent(s6);
        
        //输出
        c1.printClassScore(1);
        c2.printClassScore(2);
    }

}

最近每天锻炼身体,精神也特别不错,那天看到我师兄(我们专业算是很牛逼的人)好沧桑啊,头发都快白万了,心里边儿瞬间就哽咽了,爱工作、爱文档、爱代码、更要爱生活,加油!

posted @ 2016-04-12 23:54  一丝不苟不找借口  阅读(2590)  评论(0编辑  收藏  举报