2 回答

TA貢獻1786條經(jīng)驗 獲得超11個贊
您可以將 Comparator 的實例傳遞到排序方法中,以便您可以按除默認(rèn)/自然的對象排序方式之外的不同方面進行排序。
例如,如果有一個 Book 對象,自然排序可能基于標(biāo)題。但是如果您想根據(jù)杜威十進制數(shù)進行排序怎么辦?還是根據(jù)作者的名字?或者頁數(shù)?您可以通過編寫一個比較器來比較 Book 對象的這些字段來實現(xiàn)這一點。
實際的排序算法不需要知道正在排序的對象。它只需要一個一致的比較器(即比較 A < B 和 B < C,然后 A < C 和 C > B 和 B > A,等等)

TA貢獻1829條經(jīng)驗 獲得超9個贊
如果比較器設(shè)計為返回負(fù)值、正值或 0 來對對象進行排序,那么排序方法會如何處理這些信息?sort 方法如何從 Comparator 定義中獲取有意義的信息并執(zhí)行其操作?
基于比較器的排序方法(例如合并排序或冒泡排序)需要重復(fù)查看集合中的兩個元素并決定哪個元素應(yīng)該“排在第一位”。該決定由比較器做出,比較器返回“較小”、“較大”或“相同大小”。
這些信息就足夠了,排序方法不需要了解正在排序的對象類型。它可以重新排列集合中元素的順序,直到“左側(cè)”的所有元素都“小于”“右側(cè)”的元素。
這種方法不適用于像“桶排序”這樣的東西,它需要為每個元素本身分配絕對數(shù)值(而不僅僅是與另一個元素相比的相對值)。
添加回答
舉報