田春婷
摘要:在實(shí)際應(yīng)用中,我們會(huì)經(jīng)常需要把集合中的對(duì)象進(jìn)行比較和排序。而Java的JDK給我們提供了兩個(gè)很好的接口。實(shí)現(xiàn)了比較接口的類可以實(shí)現(xiàn)對(duì)象之間的比較。該文主要探討Java對(duì)象的排序比較方式問題。
關(guān)鍵詞:比較;接口;對(duì)象
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)34-8163-02
本文所涉及的Java對(duì)象的比較問題和所謂的排序算法(希爾排序、冒泡排序、堆排序等)是兩回事,是指執(zhí)行這些排序算法時(shí),比較兩個(gè)對(duì)象“大小”的比較操作。我們很容易理解如整型數(shù)據(jù)i>j這樣的比較方式,當(dāng)我們對(duì)多個(gè)對(duì)象比較大小時(shí),如何比較兩個(gè)對(duì)象(如person1和person2) 的”大小”呢?
Java的JDK為我們提供了兩個(gè)接口java.lang. Comparable 和java.util. Comparator[1],用來實(shí)現(xiàn)對(duì)象之間的比較排序。
1 用Comparable接口實(shí)現(xiàn)對(duì)象的比較
Comparable接口是屬于java.lang包中的接口,向String和Integer等Java內(nèi)建類提供一定的自然排序方式。Comparable接口適用于一個(gè)類有自然順序,即可比較的。假定對(duì)象集合是同一類型,該接口允許把集合排序成自然順序。實(shí)現(xiàn)Comparable接口需要實(shí)現(xiàn)compareTo(Object o)方法,int compareTo(Object o): 比較當(dāng)前實(shí)例對(duì)象與對(duì)象o,如果位于對(duì)象o之前,返回負(fù)值,如果兩個(gè)對(duì)象在排序中位置相同,則返回0,如果位于對(duì)象o后面,則返回正值。
下面以對(duì)象存儲(chǔ)在ArrayList中為例,實(shí)現(xiàn)Person對(duì)象的比較問題。
代碼實(shí)現(xiàn):
2 用Comparator接口實(shí)現(xiàn)對(duì)象的比較
參考文獻(xiàn):
[1] Daniel Liang Y.Java語言程序設(shè)計(jì)——進(jìn)階篇[M].李娜,譯.北京:機(jī)械工業(yè)出版社,2011:25-26.
[2] Daniel Liang Y.Java語言程序設(shè)計(jì)——進(jìn)階篇[M].李娜,譯.北京:機(jī)械工業(yè)出版社,2011:18-19.endprint
摘要:在實(shí)際應(yīng)用中,我們會(huì)經(jīng)常需要把集合中的對(duì)象進(jìn)行比較和排序。而Java的JDK給我們提供了兩個(gè)很好的接口。實(shí)現(xiàn)了比較接口的類可以實(shí)現(xiàn)對(duì)象之間的比較。該文主要探討Java對(duì)象的排序比較方式問題。
關(guān)鍵詞:比較;接口;對(duì)象
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)34-8163-02
本文所涉及的Java對(duì)象的比較問題和所謂的排序算法(希爾排序、冒泡排序、堆排序等)是兩回事,是指執(zhí)行這些排序算法時(shí),比較兩個(gè)對(duì)象“大小”的比較操作。我們很容易理解如整型數(shù)據(jù)i>j這樣的比較方式,當(dāng)我們對(duì)多個(gè)對(duì)象比較大小時(shí),如何比較兩個(gè)對(duì)象(如person1和person2) 的”大小”呢?
Java的JDK為我們提供了兩個(gè)接口java.lang. Comparable 和java.util. Comparator[1],用來實(shí)現(xiàn)對(duì)象之間的比較排序。
1 用Comparable接口實(shí)現(xiàn)對(duì)象的比較
Comparable接口是屬于java.lang包中的接口,向String和Integer等Java內(nèi)建類提供一定的自然排序方式。Comparable接口適用于一個(gè)類有自然順序,即可比較的。假定對(duì)象集合是同一類型,該接口允許把集合排序成自然順序。實(shí)現(xiàn)Comparable接口需要實(shí)現(xiàn)compareTo(Object o)方法,int compareTo(Object o): 比較當(dāng)前實(shí)例對(duì)象與對(duì)象o,如果位于對(duì)象o之前,返回負(fù)值,如果兩個(gè)對(duì)象在排序中位置相同,則返回0,如果位于對(duì)象o后面,則返回正值。
下面以對(duì)象存儲(chǔ)在ArrayList中為例,實(shí)現(xiàn)Person對(duì)象的比較問題。
代碼實(shí)現(xiàn):
2 用Comparator接口實(shí)現(xiàn)對(duì)象的比較
參考文獻(xiàn):
[1] Daniel Liang Y.Java語言程序設(shè)計(jì)——進(jìn)階篇[M].李娜,譯.北京:機(jī)械工業(yè)出版社,2011:25-26.
[2] Daniel Liang Y.Java語言程序設(shè)計(jì)——進(jìn)階篇[M].李娜,譯.北京:機(jī)械工業(yè)出版社,2011:18-19.endprint
摘要:在實(shí)際應(yīng)用中,我們會(huì)經(jīng)常需要把集合中的對(duì)象進(jìn)行比較和排序。而Java的JDK給我們提供了兩個(gè)很好的接口。實(shí)現(xiàn)了比較接口的類可以實(shí)現(xiàn)對(duì)象之間的比較。該文主要探討Java對(duì)象的排序比較方式問題。
關(guān)鍵詞:比較;接口;對(duì)象
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)34-8163-02
本文所涉及的Java對(duì)象的比較問題和所謂的排序算法(希爾排序、冒泡排序、堆排序等)是兩回事,是指執(zhí)行這些排序算法時(shí),比較兩個(gè)對(duì)象“大小”的比較操作。我們很容易理解如整型數(shù)據(jù)i>j這樣的比較方式,當(dāng)我們對(duì)多個(gè)對(duì)象比較大小時(shí),如何比較兩個(gè)對(duì)象(如person1和person2) 的”大小”呢?
Java的JDK為我們提供了兩個(gè)接口java.lang. Comparable 和java.util. Comparator[1],用來實(shí)現(xiàn)對(duì)象之間的比較排序。
1 用Comparable接口實(shí)現(xiàn)對(duì)象的比較
Comparable接口是屬于java.lang包中的接口,向String和Integer等Java內(nèi)建類提供一定的自然排序方式。Comparable接口適用于一個(gè)類有自然順序,即可比較的。假定對(duì)象集合是同一類型,該接口允許把集合排序成自然順序。實(shí)現(xiàn)Comparable接口需要實(shí)現(xiàn)compareTo(Object o)方法,int compareTo(Object o): 比較當(dāng)前實(shí)例對(duì)象與對(duì)象o,如果位于對(duì)象o之前,返回負(fù)值,如果兩個(gè)對(duì)象在排序中位置相同,則返回0,如果位于對(duì)象o后面,則返回正值。
下面以對(duì)象存儲(chǔ)在ArrayList中為例,實(shí)現(xiàn)Person對(duì)象的比較問題。
代碼實(shí)現(xiàn):
2 用Comparator接口實(shí)現(xiàn)對(duì)象的比較
參考文獻(xiàn):
[1] Daniel Liang Y.Java語言程序設(shè)計(jì)——進(jìn)階篇[M].李娜,譯.北京:機(jī)械工業(yè)出版社,2011:25-26.
[2] Daniel Liang Y.Java語言程序設(shè)計(jì)——進(jìn)階篇[M].李娜,譯.北京:機(jī)械工業(yè)出版社,2011:18-19.endprint