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);
    }

}

最近每天鍛煉身體,精神也特別不錯,那天看到我師兄(我們專業算是很牛逼的人)好滄桑啊,頭發都快白萬了,心里邊兒瞬間就哽咽了,愛工作、愛文檔、愛代碼、更要愛生活,加油!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM