更新時(shí)間:2020-09-21 17:34:46 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3070次
在學(xué)習(xí)java編程時(shí),排序可以說(shuō)是常規(guī)的操作,在集合或者數(shù)組中,有時(shí)候需要對(duì)里面的元素,也就是對(duì)象進(jìn)行排序,可能很多java零基礎(chǔ)的小白們只知道對(duì)數(shù)據(jù)進(jìn)行排序,對(duì)java對(duì)象排序還不是很了解,下面就來(lái)介紹一下什么是java對(duì)象排序,為什么要進(jìn)行java對(duì)象排序。
Java對(duì)象排序就是依照對(duì)象的某個(gè)或者某幾個(gè)屬性從大到小或者從小到大進(jìn)行排序,對(duì)象可以是一組數(shù)組中的元素。整數(shù)數(shù)組的排序?qū)τ诶斫飧鞣N排序方法的性能是很理想的例子,但是現(xiàn)實(shí)中卻很難有這樣的問(wèn)題。通常,需要排序的對(duì)象是一個(gè)具有許多域的Object,這些域中只有其中一些用于進(jìn)行比較。
下面我們來(lái)考慮與電話號(hào)碼本相關(guān)的條目的排序問(wèn)題,第一步是識(shí)別電話本中單個(gè)條目的結(jié)構(gòu),它可能有如下所示的格式:

為了描述電話號(hào)碼本中兩個(gè)條目之間的關(guān)系,我們加入了compareTo方法(如下圖中陰影里的域)。

來(lái)自俄勒岡州107次大會(huì)代表團(tuán)的電話號(hào)碼條目數(shù)組,根據(jù)電語(yǔ)號(hào)碼(陰影表示)進(jìn)行排序的前后。
當(dāng)this 在邏輯上小于、等于或者大于other的時(shí)候,compareTo方法返回一個(gè)小于、等于或者大于0對(duì)照整數(shù)?,F(xiàn)在就可以修改前面所介紹的任何一種排序方法來(lái)對(duì)這個(gè)電話號(hào)碼條目數(shù)組進(jìn)行排序:


對(duì)這個(gè)插入排序例程進(jìn)行詳細(xì)分析后,發(fā)現(xiàn)所有的“<”操作符都被替換成了對(duì)負(fù)的compare To返回值的檢查。結(jié)果是,數(shù)組中的電話號(hào)碼條目以電話號(hào)碼的升序進(jìn)行排列。
如果兩個(gè)或者更多的人使用相同的分機(jī)號(hào)碼,則最后條目的順序取決于排序的穩(wěn)定性。如果排序是穩(wěn)定的,則排序后數(shù)組中具有相同分機(jī)號(hào)碼的電話號(hào)碼條目的相對(duì)順序,與未排序之前它們的相對(duì)順序是相同的。如果排序不是穩(wěn)定的,則不能保證這一點(diǎn)。為了確保條目,比如說(shuō),根據(jù)分機(jī)號(hào)碼進(jìn)行升序排列,在共用分機(jī)號(hào)碼的情況下,根據(jù)名字升序排列,可以使用下面compareTo程序:

當(dāng)對(duì)象不能夠完全有序的時(shí)候,可能很難使用compareTo方法正確地描述兩個(gè)對(duì)象之間的關(guān)系。一個(gè)運(yùn)動(dòng)隊(duì)可能總是嚴(yán)格小于另外一個(gè)運(yùn)動(dòng)隊(duì)嗎?一個(gè)集合總是包含另外一個(gè)集合嗎?不是的。這些就是部分有序的例子,通常,大多數(shù)的類型都是完全有序的。
以上就是對(duì)java對(duì)象排序的一些介紹,相信通過(guò)上面的例子,大家知道了為什么要對(duì)java對(duì)象排序,這樣對(duì)于后面的文章和java視頻教程中學(xué)習(xí)怎樣進(jìn)行java對(duì)象排序奠定了基礎(chǔ)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)