Java中使用qsort對類進行排序的操作代碼
結(jié)論:
import java.util.Arrays; class Person implements Comparable<Person>{ public String name; public int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public int compareTo(Person o) { return this.age - o.age; } } public class Main{ public static void main(String args[]){ Person[] arr = new Person[3]; arr[0] = new Person("zhang", 10); arr[1] = new Person("wang", 13); arr[2] = new Person("li", 11); Arrays.sort(arr); System.out.println(Arrays.toString(arr)); } }
解析:
我們知道當(dāng)我們定義了一個整型數(shù)組然后想對其進行排序時就可以使用 Arrays.toString() 方法對數(shù)組進行排序,系統(tǒng)會默認將其按照升序排列。
class Person{ public String name; public int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
當(dāng)我們需要對類進行排序應(yīng)該怎么做呢?
首先我們先定義一個類:
class Person{ public String name; public int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
我們現(xiàn)在有了這個類之后就可以對他進行排序了,此時我們可以先嘗試直接對類進行排序操作:
public static void main(String args[]){ Person[] arr = new Person[3]; arr[0] = new Person("zhang", 10); arr[1] = new Person("wang", 13); arr[2] = new Person("li", 11); Arrays.sort(arr); System.out.println(Arrays.toString(arr)); }
雖然報錯了但是我們從報錯信息中可以找到這一塊代碼:
從中我們可以清晰的看到它將我們的代排序類強制類型轉(zhuǎn)換成了 Comparable 而我們的類根本就不能進行強制類型轉(zhuǎn)換成Comparable從而引起了錯誤。
我們既然已經(jīng)知道了哪里出現(xiàn)了錯誤那么改掉之后我們就可以實現(xiàn)使用 Arrays.toString() 方法來排序類。
此時我們先修改我們的類,使其實現(xiàn) Comparable 接口:
緊接著再類中對 compareTo() 方法進行重寫。(假如我們用年齡來排序 compareTo() 方法的返回值為:大于返回大于0的數(shù);小于返回小于零的數(shù);等于返回0)
class Person implements Comparable<Person>{ public String name; public int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } @Override public int compareTo(Person o) { return this.age - o.age; } }
運行之后可以看到結(jié)果按照年齡升序排序。
到此這篇關(guān)于JAVA中如何使用qsort對類進行排序的文章就介紹到這了,更多相關(guān)java使用qsort對類排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java多線程CountDownLatch與線程池ThreadPoolExecutor/ExecutorService案
這篇文章主要介紹了java多線程CountDownLatch與線程池ThreadPoolExecutor/ExecutorService案例,2021-02-02完美解決在Servlet中出現(xiàn)一個輸出中文亂碼的問題
下面小編就為大家?guī)硪黄昝澜鉀Q在Servlet中出現(xiàn)一個輸出中文亂碼的問題。小編覺得挺不錯的現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01SpringBoot整合token實現(xiàn)登錄認證的示例代碼
本文主要介紹了SpringBoot整合token實現(xiàn)登錄認證的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07SpringBoot+kaptcha實現(xiàn)驗證碼花式玩法詳解
這篇文章主要想和大家聊聊kaptcha的用法,畢竟這個已經(jīng)有16年歷史的玩意還在有人用,說明它的功能還是相當(dāng)強大的,感興趣的小伙伴可以了解一下2022-05-05Java實現(xiàn)4種微信搶紅包算法(小結(jié))
微信紅包是大家經(jīng)常使用的,到現(xiàn)在為止仍然有很多紅包開發(fā)的需求,實現(xiàn)搶紅包算法也是面試??碱},本文就詳細的來介紹一下如何實現(xiàn),感興趣的可以了解一下2021-12-12