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

接口 Comparable<T>

此接口強行對實現它的每一個類的對象進行總體排序。這種排序被稱爲類的天然排序,類的 compareTo 方法被稱爲它的天然比較方法java

實現此接口的對象列表(和數組)能夠經過 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爲等於
}
}this

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

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

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

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

相關文章
相關標籤/搜索