您好,登錄后才能下訂單哦!
這篇文章主要介紹了java自帶排序怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
基本類型排序:
int a[]={1,2,5,3,6,4}; Arrays.sort(a);//對a升序排序 Arrays.sort(a,0,6);//對a從下標0,到下標5排序
自定義類型排序:
static Student b[]=new Student [4]; for(int i=0;i<4;++i)b[i]=new Student("str", 4-i); Arrays.sort(b,new Mcompeter());//對數組所有元素排序,Comparator可以用實例,也可以匿名對象 Arrays.sort(b,0,4,new Mcompeter());//對數組從下標0到3排序 static class Student { public String name; public int age; public Student(String name,int age){ this.name = name; this.age = age; } public String toString() { return "Student [name=" + name + ", age=" + age + "]"; } } static class Mcompeter implements Comparator<Student> { @Override public int compare(Student o1, Student o2) { // TODO 自動生成的方法存根 if(o1.name.compareTo(o2.name)==0) { return o1.age-o2.age; } else return o1.name.compareTo(o2.name); } }
比較函數的寫法:
參考:https://blog.csdn.net/weixin_41922289/article/details/90463971
比較邏輯:
o1 < o2 ---- 返回負數
o1 = o2 ---- 返回 0
o1 > o2 ---- 返回正數
人都繞暈了。。。
理一下思路:
排序函數默認從小到大排序
那么怎么界定誰大誰小呢,給排序函數一個比較函數
那么比較函數已經有兩個參數了,怎么表示o1,o2的大小關系呢?
就是邏輯如下:
o1 < o2 ---- 返回負數
o1 = o2 ---- 返回 0
o1 > o2 ---- 返回正數
返回負數表示o1<o2
返回0 表示相等
返回正數表示o1>o2
要把排序函數和比較函數分離開
他們是獨立實現功能的函數,只要保證他們自己的正確即可
寫比較函數需要做的就是:
在o1<o2時返回負數
在o1=o2時返回0
在o1>o2時返回整數
其中的"<"和“>”不一定是真實數值意義上的小于和大于,而是你希望的小于和大于。
比如o1 o2
都為int
if(o1>o2) return -1;
那么o1的值比o2大就是我定義的“小于”
感謝你能夠認真閱讀完這篇文章,希望小編分享的“java自帶排序怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。