方法:將多個值放在一個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); } }
最近每天鍛煉身體,精神也特別不錯,那天看到我師兄(我們專業算是很牛逼的人)好滄桑啊,頭發都快白萬了,心里邊兒瞬間就哽咽了,愛工作、愛文檔、愛代碼、更要愛生活,加油!
