2018-07-25期 Java排序編程小案例

來源:互聯網
上載者:User

標籤:pack   can   說明   dem   .com   集合排序   自動   nts   排序   

1、Student類

package cn.sjq.sort.java;

/**

* 通過實現Java的Comparable<T>介面來對Student對象進行排序

* 此介面強行對實現它的每個類的對象進行整體排序。此排序被稱為該類的自然排序,類的 compareTo 方法被稱為它的自然比較方法

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

* @author songjq

*

*/

public class Student1 implements Comparable<Student1> {

// 定義student對象屬性

private String stuNo;

private String stuName;

private int stuAge;

private float stuMath;

public String getStuNo() {

return stuNo;

}

public void setStuNo(String stuNo) {

this.stuNo = stuNo;

}

public String getStuName() {

return stuName;

}

public void setStuName(String stuName) {

this.stuName = stuName;

}

public int getStuAge() {

return stuAge;

}

public void setStuAge(int stuAge) {

this.stuAge = stuAge;

}

public float getStuMath() {

return stuMath;

}

public void setStuMath(float stuMath) {

this.stuMath = stuMath;

}

public Student1() {

}

public Student1(String stuNo, String stuName, int stuAge, float stuMath) {

this.stuNo = stuNo;

this.stuName = stuName;

this.stuAge = stuAge;

this.stuMath = stuMath;

}

/*

* 重新Student對象toString()方法

* (non-Javadoc)

* @see java.lang.Object#toString()

*/

@Override

public String toString() {

return "["+this.stuNo+"\t"+this.stuName+"\t"+this.stuAge+"\t"+this.stuMath+"]";

}

/*

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

*  參數: o - 要比較的對象。

*  返回:

* 負整數、零或正整數,根據此對象是小於、等於還是大於指定對象。

* 拋出: ClassCastException -

* 如果指定對象的類型不允許它與此對象進行比較。 (non-Javadoc)

*

* @see java.lang.Comparable#compareTo(java.lang.Object)

*/

@Override

public int compareTo(Student1 o) {

//這雷根據Math大小進行降序排序

if(this.stuMath<o.getStuMath()) {

return 1;

}else if(this.stuMath == o.getStuMath()) {

return 0;

}else {

return -1;

}

}

}

2、JavaSortDemoMain類

package cn.sjq.sort.java;

import java.util.Arrays;

/**

* 對Student對象集合排序

* @author songjq

*

*/

public class JavaSortDemoMain {

public static void main(String[] args) {

// 執行個體化Student對象

Student1 s1 = new Student1("STU000001", "Zhang", 19, 89.12f);

Student1 s2 = new Student1("STU000005", "Lisi", 18, 84.12f);

Student1 s3 = new Student1("STU000004", "Wanger", 22, 81.22f);

Student1 s4 = new Student1("STU000003", "Mazi", 21, 95.13f);

Student1 s5 = new Student1("STU000002", "Zhaowu", 17, 86.12f);

/*

// 方式1:將student對象封裝到資料,Student對象沒有實現Comparable<T>介面

Student[] stuArray = { s1, s2, s3, s4, s5 };

//對stuArray排序

Arrays.sort(stuArray);

// 輸出stuArray對象集合

System.out.println("************** Arrays.sort(stuArray)  ********************");

for(Student stu:stuArray) {

System.out.println(stu);

}

*/

/**

* 運行結果:

* Student對象沒有實現Comparable<T>介面情況下,執行報cn.sjq.sort.java.Student cannot be cast to java.lang.Comparable

* 說明如果要使用Arrays.sort(stuArray)或者Collections.sort(stuArray)對對象進行排序,需要實現Comparable<T>介面

*/

// 方式2:將student對象封裝到資料,Student對象實現Comparable<T>介面

Student1[] stuArray = { s1, s2, s3, s4, s5 };

//對stuArray排序

Arrays.sort(stuArray);

// 輸出stuArray對象集合

System.out.println("************** Arrays.sort(stuArray)  ********************");

for(Student1 stu:stuArray) {

System.out.println(stu);

}

/**

* 運行結果:

* [STU000003Mazi2195.13]

[STU000001Zhang1989.12]

[STU000002Zhaowu1786.12]

[STU000005Lisi1884.12]

[STU000004Wanger2281.22]

從運行結果可以看出,確實是按照stuMath欄位按照降序進行了排序

*/

}

}


2018-07-25期 Java排序編程小案例

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.