本帖最後由 李泳霖 於 2023-3-18 09:54 編輯
承上題,以陣列取代原本的集合,陣列中包含五個 Student 物件,以 Arrays 類別下的 sort() 方法搭配自定的比較器,分別完成「依座號遞增排序」及「依分數遞減排序」之操作練習。
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- public class P4 {
- Student stu[]=new Student[5];
- P4()
- {
- stu[0]=new Student(4, 60, "大雄");
- stu[1]=new Student(1, 90, "小叮噹");
- stu[2]=new Student(3, 100, "宜靜");
- stu[3]=new Student(2, 70, "阿福");
- stu[4]=new Student(5, 20, "技安");
- System.out.println("原始資料");
- show();
- /*Collections.sort(al,new MyComparator1());
- System.out.println("依座號遞增:");
- show();
- Collections.sort(al,new MyComparator2());
- System.out.println("依成績遞減:");
- show();*/
- }
- void show()
- {
- System.out.println("座號\t姓名\t分數");
- System.out.println("----------------------");
- for (int i = 0; i < stu.length; i++) {
- System.out.println(stu[i].n+"\t"+stu[i].name+"\t"+stu[i].s+"\t");
- }
- }
- class MyComparator1 implements Comparator<Student>
- {
- public int compare(Student o1, Student o2) {
- // TODO 自動產生的方法 Stub
- return o1.n-o2.n;
- }
- }
- class MyComparator2 implements Comparator<Student>
- {
- @Override
- public int compare(Student o1, Student o2) {
- // TODO 自動產生的方法 Stub
- return o2.s-o1.s;
- }
- }
- class Student
- {
- int n,s;
- String name;
- Student(int n,int s,String name)
- {
- this.n=n;
- this.name=name;
- this.s=s;
- }
- }
- public static void main(String[] args) {
- new P4();
- }
- }
複製代碼 |