java自帶排序使用
基本類型排序:
int a[]={1,2,5,3,6,4}; Arrays.sort(a);//對a升序排序 Arrays.sort(a,0,6);//對a從下標(biāo)0,到下標(biāo)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());//對數(shù)組所有元素排序,Comparator可以用實(shí)例,也可以匿名對象 Arrays.sort(b,0,4,new Mcompeter());//對數(shù)組從下標(biāo)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 自動(dòng)生成的方法存根 if(o1.name.compareTo(o2.name)==0) { return o1.age-o2.age; } else return o1.name.compareTo(o2.name); } }
比較函數(shù)的寫法:
參考:http://www.dbjr.com.cn/article/232347.htm
比較邏輯:
- o1 < o2 ---- 返回負(fù)數(shù)
- o1 = o2 ---- 返回 0
- o1 > o2 ---- 返回正數(shù)
人都繞暈了。。。
理一下思路:
排序函數(shù)默認(rèn)從小到大排序
那么怎么界定誰大誰小呢,給排序函數(shù)一個(gè)比較函數(shù)
那么比較函數(shù)已經(jīng)有兩個(gè)參數(shù)了,怎么表示o1,o2的大小關(guān)系呢?
就是邏輯如下:
o1 < o2 ---- 返回負(fù)數(shù)
o1 = o2 ---- 返回 0
o1 > o2 ---- 返回正數(shù)
- 返回負(fù)數(shù)表示o1<o2
- 返回0 表示相等
- 返回正數(shù)表示o1>o2
要把排序函數(shù)和比較函數(shù)分離開
他們是獨(dú)立實(shí)現(xiàn)功能的函數(shù),只要保證他們自己的正確即可
寫比較函數(shù)需要做的就是:
- 在o1<o2時(shí)返回負(fù)數(shù)
- 在o1=o2時(shí)返回0
- 在o1>o2時(shí)返回整數(shù)
其中的"<"和“>”不一定是真實(shí)數(shù)值意義上的小于和大于,而是你希望的小于和大于。
比如o1 o2
都為int
if(o1>o2) return -1;
那么o1的值比o2大就是我定義的“小于”
到此這篇關(guān)于java
自帶排序使用的文章就介紹到這了,更多相關(guān)java自帶排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java Arrays快速打印數(shù)組的數(shù)據(jù)元素列表案例
這篇文章主要介紹了java Arrays快速打印數(shù)組的數(shù)據(jù)元素列表案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09IDEA通過git回滾到某個(gè)提交節(jié)點(diǎn)或某個(gè)版本的操作方法
這篇文章主要介紹了IDEA通過git回滾到某個(gè)提交節(jié)點(diǎn)或某個(gè)版本的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Spring MVC---數(shù)據(jù)綁定和表單標(biāo)簽詳解
本篇文章主要介紹了Spring MVC---數(shù)據(jù)綁定和表單標(biāo)簽詳解,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-01-01Springboot整合多數(shù)據(jù)源代碼示例詳解
這篇文章主要介紹了Springboot整合多數(shù)據(jù)源代碼示例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Spring?boot2.0?實(shí)現(xiàn)日志集成的方法(3)
這篇文章主要介紹了Spring?boot2.0?實(shí)現(xiàn)日志集成的方法,基于上一篇將日志信息根據(jù)類別輸出到不同的文件中,這篇文章將通過日志來監(jiān)控用戶的操作行為、請求的耗時(shí)情況,針對耗時(shí)久的請求進(jìn)行性能分析,提升系統(tǒng)性能,需要的小伙伴可以參考一下2022-04-04