學習筆記--如何使用Comparable接口里compareTo 方法進行排序


接口 Comparable<T>

此接口強行對實現它的每個類的對象進行整體排序。這種排序被稱為類的自然排序,類的 compareTo 方法被稱為它的自然比較方法

實現此接口的對象列表(和數組)可以通過 Collections.sort(和 Arrays.sort)進行自動排序。實現此接口的對象可以用作有序映射中的鍵或有序集合中的元素,無需指定比較器

方法詳細信息

compareTo

int compareTo(T o)
比較此對象與指定對象的順序。如果該對象小於、等於或大於指定對象,則分別返回負整數、零或正整數。 

練習

1.首先定義一個學生類,帶有姓名、班級和分數三個參數,並且繼承Comparable接口。

public class Student implements Comparable<Student>{
private int sid; //學號
private String sname; //姓名
private double score; //分數

2.繼承的接口引出自帶的方法,定義規則,使之可以按照分數來排序。

public int compareTo(Student s) {
if(this.score>s.getScore()){
return 1; //正整數是大於
}else if(this.score<s.getScore()){
return -1;//負整數是小於
}else{
return 0; //0為等於
}
}

3.構造有參無參方法並且封裝。
4.接下來創建一個測試類,創建3個Student對象分別帶有三個參數。

public class TestCom {
public static void main(String[] args) {
Student s1=new Student(101, "小強", 89.5);
Student s2=new Student(102, "大強", 56.5);
Student s3=new Student(103, "小飛", 90);

5.將三個學生信息添加到集合中。

List<Student> slist=new ArrayList<Student>();
slist.add(s1);
slist.add(s2);
slist.add(s3);

6.我們可以通過for循環輸出打印排序前的分數。

System.out.println("排序前-------------------");
for (Student s : slist) {
System.out.println(s.getScore());
}


7.使用Collections.sort()方法排序 升序。

Collections.sort(slist);

8.for循環打印輸出排序后的分數。

System.out.println("排序后-------------------");
for (Student s : slist) {
System.out.println(s.getScore());

7.通過排序我們可以獲得最高分。

System.out.println("最高分為"+slist.get(slist.size()-1).getScore());

8.控制台的輸出結果為:

排序前-------------------
89.5
56.5
90.0
排序后-------------------
56.5
89.5
90.0
最高分為90.0

總結:我們可以使用Comparable接口中的compareTo方法使原本無法比較的對象通過某種自身條件來排序.

 

---部分內容摘自API_1.6


免責聲明!

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



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