日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java6.0中Comparable接口与Comparator接口详解

發(fā)布時間:2025/5/22 java 138 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java6.0中Comparable接口与Comparator接口详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Java6.0中Comparable接口與Comparator接口詳解

說到現(xiàn)在,讀者應(yīng)該對Comparable接口有了大概的了解,但是為什么又要有一個Comparator接口呢?難道Java的開發(fā)者都吃飽撐著沒事做嗎?

再談Comparator接口之前,大家應(yīng)該先了解一個叫“策略模式”的東東。一下是百度百科對策略模式的描寫:

策略模式定義了一系列的算法,并將每一個算法封裝起來,而且使它們還可以相互替換。策略模式讓算法獨(dú)立于使用它的客戶而獨(dú)立變化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.)

?

之所以要談到策略模式,就是因?yàn)镃omparator接口其實(shí)就是一種策略模式的實(shí)踐。實(shí)現(xiàn)Comparator接口的類必然就會實(shí)現(xiàn)一個compareTo(Object o1, Object o2)的方法,而這個方法就是算法中的一部分,所有使用了compareTo方法的類都不會關(guān)心compareTo是如何工作的,只關(guān)心他的返回值,這也是面向?qū)ο笾兄姆庋b特性。

那Comparator接口應(yīng)該如何使用呢?別急,首先我們要先對Person類進(jìn)行一下處理,因?yàn)槲覀儸F(xiàn)在使用Comparator接口,所以Comparable接口就可以光榮的退休了:

1: public class Person { 2: 3: private String name; 4: private int age; 5: 6: public Person() { 7: 8: } 9: 10: public Person(String name, int age) { 11: this.name = name; 12: this.age = age; 13: } 14: 15: public String getName() { 16: return name; 17: } 18: 19: public void setName(String name) { 20: this.name = name; 21: } 22: 23: public int getAge() { 24: return age; 25: } 26: 27: public void setAge(int age) { 28: this.age = age; 29: } 30: 31: @Override 32: public String toString() { 33: return "Person [age=" + age + ", name=" + name + "]"; 34: } 35: 36: }

新建一個實(shí)現(xiàn)Comparator的實(shí)現(xiàn)類PersonComparator:

1: import java.util.Comparator; 2: 3: public class PersonComparator implements Comparator<Person> { 4: 5: @Override 6: public int compare(Person p1, Person p2) { 7: if (p1.getAge() > p2.getAge()) { 8: return 1; 9: } else if (p1.getAge() < p2.getAge()) { 10: return -1; 11: } 12: return 0; 13: } 14: 15: }

然后再用回我們的CompareTest做測試:

1: import java.util.Arrays; 2: 3: public class CompareTest { 4: 5: public static void main(String[] args) { 6: Person[] persons = { 7: new Person("P1", 60), 8: new Person("P2", 20), 9: new Person("P3", 40) 10: }; 11: 12: System.out.println(Arrays.toString(persons)); 13: 14: Arrays.sort(persons, new PersonComparator()); 15: 16: System.out.println(Arrays.toString(persons)); 17: } 18: 19: }

注意:在上面的sort方法中,我們傳進(jìn)了一個PersonComparator的實(shí)例對象作為參數(shù),讀者也可以試試不傳入這個參數(shù),看是否能正確工作。

結(jié)果當(dāng)然是跟上面演示的例子一樣啦,我就不再重復(fù)了

總結(jié)

以上是生活随笔為你收集整理的Java6.0中Comparable接口与Comparator接口详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 香蕉久久久久久久av网站 | 成人av专区 | 色中文在线 | 中国老头性行为xxxx | 中文字幕有码无码人妻av蜜桃 | 欧美日韩另类视频 | 亚洲欧美综合另类 | 加勒比在线免费视频 | 亚洲综合在线中文字幕 | 日日碰狠狠添天天爽无码 | 性日韩 | 香蕉视频黄污 | 奇米四色影视 | 丰满岳跪趴高撅肥臀尤物在线观看 | 日韩一级二级三级 | 国产做爰全免费的视频软件 | 在线看片亚洲 | 小泽玛利亚一区二区三区视频 | 色婷婷综合久久久久中文一区二区 | 伊人成人在线视频 | 99re6在线精品视频免费播放 | 91色视频在线 | 最近日韩免费视频 | 国产精品自拍片 | 国产av天堂无码一区二区三区 | 一级做a爰片久久毛片 | 91超碰国产在线 | av大片免费在线观看 | 欧美日韩激情网 | 大桥未久在线视频 | 少妇偷人精品无码人妻 | 逼特逼在线视频 | www.999热| 超碰97色 | 午夜偷拍视频 | 国产成人一级片 | 中文字幕av第一页 | 国产日韩91| 欧美一级片网站 | 毛片一级在线观看 | 在线观看91av | 久久久久亚洲av无码专区体验 | 91在线观看免费高清完整版在线观看 | 99精品视频一区二区三区 | 美女激情av | 国产精品视频免费看 | 51调教丨国产调教视频 | 国产精品国产 | 婷婷激情成人 | 色呦呦一区二区三区 | 午夜精品久久久久久久爽 | 日韩成人在线免费观看 | 欧亚av在线| 免费看av网| 男人天堂成人网 | 长河落日电视连续剧免费观看 | 日本三级播放 | 午夜视频网址 | 伊人久久亚洲综合 | 中文在线字幕 | 国产一级免费在线观看 | 国产91免费观看 | 亚洲理伦 | 青青青国产视频 | 无码熟妇人妻av | 久久精品国产亚洲av无码娇色 | 久久精品一区二区三区不卡牛牛 | 91丨porny丨在线中文 | 日韩精品123| 第一福利在线视频 | 狠狠鲁狠狠干 | 日本人的性生活视频 | 国产a免费 | 久久久久久久久久久国产 | 天天射综合网站 | 动漫女被黄漫免费视频 | 亚洲欧美自拍偷拍 | 国产精品久久久久久久久久辛辛 | 亚洲精品偷拍视频 | 久草久操 | 中文字幕+乱码+中文 | 日韩精品自拍 | 亚洲成人a v | 91视频中文字幕 | 青青草超碰在线 | 国产ts在线播放 | 亚洲精品推荐 | 中国免费一级片 | 国产精品久久久久久久久免费看 | 国产欧美a | 高清av网| 好妞色妞国产在线视频 | 日本特黄一级片 | 伊人色综合久久天天 | 免费中文字幕av | 日韩电影在线一区二区 | 欧美性色视频 | 日韩欧美精品一区 | www.夜夜骑 |