一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Java常用類庫

 jp乞巧樓 2015-07-30

 Java常用類庫--比較器

Comparable接口:

詳細信息:

方法摘要

 int

compareTo(T o)
          比較此對象與指定對象的順序。

  

方法詳細信息

 

compareTo

int compareTo(T o)

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

實現(xiàn)類必須確保對于所有的 和 都存在 sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) 的關系。(這意味著如果 y.compareTo(x) 拋出一個異常,則 x.compareTo(y) 也要拋出一個異常。)

實現(xiàn)類還必須確保關系是可傳遞的:(x.compareTo(y)>0 && y.compareTo(z)>0) 意味著 x.compareTo(z)>0。

最后,實現(xiàn)者必須確保 x.compareTo(y)==0 意味著對于所有的 z,都存在 sgn(x.compareTo(z)) == sgn(y.compareTo(z))。 強烈推薦 (x.compareTo(y)==0) == (x.equals(y)) 這種做法,但并不是 嚴格要求這樣做。一般來說,任何實現(xiàn) Comparable 接口和違背此條件的類都應該清楚地指出這一事實。推薦如此闡述:注意:此類具有與 equals 不一致的自然排序。

在前面的描述中,符號 sgn(expression指定 signum 數(shù)學函數(shù),該函數(shù)根據(jù) expression 的值是負數(shù)、零還是正數(shù),分別返回 -1、或 中的一個值。

參數(shù):

o- 要比較的對象。

返回:

負整數(shù)、零或正整數(shù),根據(jù)此對象是小于、等于還是大于指定對象。

拋出:

ClassCastException如果指定對象的類型不允許它與此對象進行比較。

Comparable是個泛型接口,只有一個方法,其返回值有三種取值,

·1表示大于

·0表示等于

·-1表示小于

看如下程序:

package ArraysTest;

 

import java.util.*;

 

class Test implements Comparable<Test>{ //繼承Comparable接口

String name;

int age;

public Test(String name,int age){

this.name=name;

this.age=age;

}

public int compareTo(Test a){ //覆寫compareTo方法,指示年齡從大到小排序

if(age<a.age)return 1;

else if(age==a.age)return 0;

else return -1;

}

public String toString(){

return name+"+age;

}

}

 

public class ArraysTest001 {

public static void main(String args[]){

Test t[]=new Test[5];

t[0]=new Test("Hello1",23);

t[1]=new Test("Hello2",34);

t[2]=new Test("Hello3",12);

t[3]=new Test("Hello4",23);

t[4]=new Test("Hello5",89);

Arrays.sort(t);

for(int i=0;i<5;i++){

System.out.println(t[i]);

}

}

}

 

排序方法為二叉排序。

 

Comparator接口:

方法摘要

 int

compare(T o1, T o2)
          比較用來排序的兩個參數(shù)。

 boolean

equals(Object obj)
          指示某個其他對象是否等于此 Comparator。


可以看看Arrays類的這兩個sort方法:

static

 

sort(T[] a, Comparator<? super T> c)
          根據(jù)指定比較器產(chǎn)生的順序?qū)χ付▽ο髷?shù)組進行排序。

static

sort(T[] a, int fromIndex, int toIndex, Comparator<? super T> c)
          根據(jù)指定比較器產(chǎn)生的順序?qū)χ付▽ο髷?shù)組的指定范圍進行排序。


這兩個方法不需要本類直接繼承Comparable接口但是需要使用Comparator接口指定排序方法:

package ArraysTest;

 

import java.util.*;

 

class Test{

String name;

int age;

public Test(String name,int age){

this.name=name;

this.age=age;

}

public String toString(){

return name+"+age;

}

}

 

class Test1 implements Comparator<Test>{

public int compare(Test a,Test b){

if(a.age>b.age)return 1;

else if(a.age==b.age)return 0;

else return -1;

}

}

 

 

public class ArraysTest001 {

public static void main(String args[]){

Test t[]=new Test[5];

t[0]=new Test("Hello1",23);

t[1]=new Test("Hello2",34);

t[2]=new Test("Hello3",12);

t[3]=new Test("Hello4",23);

t[4]=new Test("Hello5",89);

Arrays.sort(t,new Test1());

for(int i=0;i<5;i++){

System.out.println(t[i]);

}

}

}

 

 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产一区二区三区四区免费| 日本本亚洲三级在线播放| 日本不卡在线视频你懂的| 精品国产91亚洲一区二区三区| 欧美日韩综合在线第一页| 91日韩在线观看你懂的| 成人精品视频一区二区在线观看| 少妇熟女精品一区二区三区| 99热中文字幕在线精品| 日韩精品免费一区二区三区| 激情国产白嫩美女在线观看| 国产免费一区二区不卡| 国产人妻熟女高跟丝袜| 日韩成人中文字幕在线一区| 午夜精品成年人免费视频| 东京热男人的天堂久久综合| 视频一区二区黄色线观看| 有坂深雪中文字幕亚洲中文| 欧美国产日本免费不卡| 中文字幕五月婷婷免费| 亚洲男人天堂网在线视频| 91欧美一区二区三区成人| 丝袜人妻夜夜爽一区二区三区| 成人精品一区二区三区在线| 亚洲天堂精品1024| 国产成人精品一区二区三区| 我想看亚洲一级黄色录像| 国产精品视频一级香蕉| 国产av大片一区二区三区| 国产午夜精品在线免费看| 国产91人妻精品一区二区三区| 精品少妇一区二区视频| 久久香蕉综合网精品视频| 亚洲欧洲在线一区二区三区| 激情图日韩精品中文字幕| 国产精欧美一区二区三区久久| 无套内射美女视频免费在线观看| 日韩一区二区三区18| 亚洲中文在线男人的天堂| 91精品视频免费播放| 国产精品一区二区香蕉视频|