真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

外部排序java代碼,Java中排序

java排序問(wèn)題,comparator接口,求高手

首先,比較Comparable和Comparator的區(qū)別

目前創(chuàng)新互聯(lián)已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、來(lái)鳳網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

Comparable Comparator 都是用來(lái)實(shí)現(xiàn)集合中的排序的,只是 Comparable 是在集合內(nèi)部定義的方法實(shí)現(xiàn)的排序,Comparator 是在集合外部實(shí)現(xiàn)的排序,所以,如想實(shí)現(xiàn)排序,就需要在集合外定義 Comparator 接口的方法或在集合內(nèi)實(shí)現(xiàn) Comparable 接口的方法。

Comparable 是一個(gè)對(duì)象本身就已經(jīng)支持自比較所需要實(shí)現(xiàn)的接口(如 String、Integer 自己就可以完成比較大小操作);

而 Comparator 是一個(gè)專用的比較器,當(dāng)這個(gè)對(duì)象不支持自比較或者自比較函數(shù)不能滿足你的要求時(shí),你可以寫一個(gè)比較器來(lái)完成兩個(gè)對(duì)象之間大小的比較。

可以說(shuō)一個(gè)是類自已完成比較,一個(gè)是外部程序?qū)崿F(xiàn)比較的差別而已。

用 Comparator 是策略模式(strategy design pattern),就是不改變對(duì)象自身,而用一個(gè)策略對(duì)象(strategy object)來(lái)改變它的行為。

從操作上:Comparable 需要在被排序的類中實(shí)現(xiàn)其接口,而Comparator 是在被排序類的外部實(shí)現(xiàn)其接口即可.這樣可以看出Comparable操作更簡(jiǎn)單,而Comparator操作復(fù)雜但是可以實(shí)現(xiàn)多種不同的排序方案.

比如:你想對(duì)整數(shù)采用絕對(duì)值大小來(lái)排序,Integer 是不符合要求的,你不能去修改 Integer 類去改變它的排序行為,只要使用一個(gè)實(shí)現(xiàn)了 Comparator 接口的對(duì)象來(lái)實(shí)現(xiàn)控制它的排序就行了。

實(shí)現(xiàn)Comparator接口,實(shí)現(xiàn)排序

在Comparator接口里,只有一個(gè)方法是需要實(shí)現(xiàn)的:

Java代碼

int compare(Object o1,Object o2);

int compare(Object o1,Object o2);

提示:如果o1小于o2,返回一個(gè)負(fù)數(shù);如果o1大于o2,返回一個(gè)正數(shù);如果他們相等,則返回0;

注意:compare方法一定要是對(duì)稱的,意思是compare(a,b)返回的結(jié)果要跟compare(b,a)相反。相反的結(jié)果意味著,要么返回的值帶有不同的正負(fù)號(hào),要么都是0。注意,象compare(a,b)返回4而compare(b,a)返回-2這樣的情況是合法的。方法里常??赡軖伋霎惓#谶@個(gè)方法里拋出異常也要是對(duì)稱的。如果調(diào)用compare(a,b)時(shí)拋出了一個(gè)ClassCastException異常,那么調(diào)用compare(b,a)時(shí)也必須拋出一個(gè)ClassCastException異常。

另外:任何你準(zhǔn)備重用的Comparator都必須是可序列化的。TreeSet和TreeMap類存儲(chǔ)Comparator以便進(jìn)行比較,因此為了這兩個(gè)類能被序列化,它們使用的Comparator也必須能被序列化。

Comparator接口,通常被Collections.sort方法使用,它是JAVA中需要了解的一個(gè)很重要的部分,因?yàn)樗幸恍┲匾钠跫s義務(wù).

java的內(nèi)外部比較器對(duì)于各種類型是怎樣實(shí)現(xiàn)排序的?

基礎(chǔ)類型比較本身就只有“值”,所以排序的也就是常用的排序算法,這些都不用定義什么規(guī)則,數(shù)值大就是大,數(shù)值小就是小。實(shí)現(xiàn)細(xì)節(jié)可以查看系列Arrays.sort()方法和Collections.sort()方法。其它類型(對(duì)象),例如字符串,都要自己實(shí)現(xiàn)Comparable來(lái)告訴排序算法的比較規(guī)則。String默認(rèn)就實(shí)現(xiàn)Comparable,規(guī)則為字母序。

總結(jié)起來(lái)就是,基礎(chǔ)類型通過(guò)“值”就能明確大?。ㄒ簿褪遣挥米远x規(guī)則),非基礎(chǔ)類型(對(duì)象)需要實(shí)現(xiàn)Comparable來(lái)定義規(guī)則,否則沒(méi)法比較。

求外部排序中的置換選擇排序(java實(shí)現(xiàn))

//?傳入array

int?siteIndex?=?0;

int??tempVariable?=?0;

for?(int?i?=?0;?i??array.length;?i++){

siteIndex?=?i;

for?(int?j?=?i+1;?j?array.length;?j++){

if(array[siteIndex]array[j]){

siteIndex?=?j;

}

tempVariable?=?array[i];

array[i]?=?array[siteIndex];

array[siteIndex]?=?tempVariable;

siteIndex?=?i;//?重新賦值

}

}


分享題目:外部排序java代碼,Java中排序
網(wǎng)頁(yè)URL:http://weahome.cn/article/hdoiig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部