1. 程式人生 > >Java LinkedList 集合的使用之平均成績降序排列

Java LinkedList 集合的使用之平均成績降序排列

題目:

資訊學院年終評定獎學金,需要對整個年級的學生按照平均分數進行排名。

要求:根據輸入的學號和平均成績,按照平均成績降序輸出學號,如果平均成績相同,按照輸入的順序輸出。

 

首先要寫一個學生類,儲存每個學生的資訊,包括學號,平均成績

package Work3;

public class Student {
	private String id;
	private double grade;
	public Student(String id, double grade) {
		this.id = id;
		this.grade = grade;
	}
	public Student() {}
	public String getId() {
		return this.id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public double getGrade() {
		return this.grade;
	}
	public void setGrade(double grade) {
		this.grade = grade;
	}
	public String toString() {
		return "Student [id=" + id + ", grade=" + grade + "]";
	}
}

 二、寫一個測試的主類,按降序排列輸出學生的資訊

注意:1,降序排列需要用到集合排列函式Collections.sort()函式,

                 Collections.sort(list); 預設是按照升序排列

               降序排列時需要自己寫一個排列函式,但是Java提供了一個比較器new Comparator(),可以將比較規則寫入這個                    比較器函式

Collections.sort(list,new Comparator<Student>()
       {

            public int compare(Student stu1, Student stu2)
            {

               return (int) (stu2.getGrade()-stu1.getGrade());

            }      

       }
       );
       

            2,輸出結果時,如果在學生類裡面已經寫了輸出函式,在主函式中寫輸出時,直接就可以for迴圈遍歷陣列輸出,但是如果在學生類裡面沒有寫顯示函式,則需要在主函式裡面呼叫get函式

 

全部程式碼

package Work3;



import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Sop {
	public static void main(String[] args)
	{
		List<Student>list=new LinkedList<Student>();
		int n;
		Scanner cin=new Scanner(System.in);
		System.out.println("輸入學生的總人數");
		n=cin.nextInt();
		System.out.println("輸入學生的學號,平均成績");
		for(int i=0;i<n;i++)
		{
			String id=cin.next();
			double grade=cin.nextDouble();
			Student student=new Student(id, grade);
			list.add(student);
		}

		cin.close();
       Collections.sort(list,new Comparator<Student>()
       {

            public int compare(Student stu1, Student stu2)
            {

               return (int) (stu2.getGrade()-stu1.getGrade());

            }      

       }
       );
       
       for(int i=0;i<list.size();i++)
       {
    	   //System.out.println(list.get(i).getId()+" "+list.get(i).getGrade());
    	   System.out.println(list.get(i));
       }
}
}