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.dhdzp.com/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)文章
SpringBoot中的@EnableConfigurationProperties注解原理及用法
在SpringBoot中,@EnableConfigurationProperties注解是一個(gè)非常有用的注解,它可以用于啟用對特定配置類的支持,在本文中,我們將深入探討@EnableConfigurationProperties注解,包括它的原理和如何使用,需要的朋友可以參考下2023-06-06
eclipse報(bào)錯(cuò) eclipse啟動(dòng)報(bào)錯(cuò)解決方法
本文將介紹eclipse啟動(dòng)報(bào)錯(cuò)解決方法,需要了解的朋友可以參考下2012-11-11
Eclipse 出現(xiàn)A configuration with this name already exists問題解決方
這篇文章主要介紹了Eclipse 出現(xiàn)A configuration with this name already exists問題解決方法的相關(guān)資料,需要的朋友可以參考下2016-11-11
IntelliJ IDEA 創(chuàng)建 Java 項(xiàng)目及創(chuàng)建 Java 文件并運(yùn)行的詳細(xì)步驟
這篇文章主要介紹了IntelliJ IDEA 創(chuàng)建 Java 項(xiàng)目及創(chuàng)建 Java 文件并運(yùn)行的詳細(xì)步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
關(guān)于mybatis-plus-generator的簡單使用示例詳解
在springboot項(xiàng)目中集成mybatis-plus是很方便開發(fā)的,最近看了一下plus的文檔,簡單用一下它的代碼生成器,接下來通過實(shí)例代碼講解關(guān)于mybatis-plus-generator的簡單使用,感興趣的朋友跟隨小編一起看看吧2024-03-03
Java代碼如何判斷l(xiāng)inux系統(tǒng)windows系統(tǒng)
這篇文章主要介紹了Java代碼如何判斷l(xiāng)inux系統(tǒng)windows系統(tǒng)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01

