第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我可以將比較器對象傳遞給排序方法?

為什么我可以將比較器對象傳遞給排序方法?

繁花不似錦 2023-10-19 21:50:51
從我見過的所有排序方法示例中,我從未遇到過傳遞比較器定義的示例。如果比較器設(shè)計為返回負(fù)值、正值或 0 來對對象進行排序,那么排序方法會如何處理這些信息?sort 方法如何從 Comparator 定義中獲取有意義的信息并執(zhí)行其操作?這是有問題的排序方法:    public void sort() {        library.sort(new BookComparator());    }這是整個 Comparator 類:import java.util.Comparator;public class BookComparator implements Comparator<Book> {    public int compare(Book a, Book b) {        if(a == null || b == null) {            throw new NullPointerException();        }        int result = 0 ;        if(a.getAuthor() == null) {            if(b.getAuthor() != null) {                result = -1;            }        } else if(b.getAuthor() == null) {            result = 1;        } else {            result = a.getAuthor().compareTo(b.getAuthor());        }        if(result !=0) {            return result;        }        if(a.getTitle() == null) {            if(b.getTitle() != null) {                result = -1;            }        } else if(b.getTitle() == null) {            result = 1;        } else {            result = a.getTitle().compareTo(b.getTitle());        }        if(result !=0) {            return result;        }        if(a.getYear() < b.getYear()){            return -1;        } else if (a.getYear() == b.getYear()){            return 0;        } else {            return 1;        }    }}
查看完整描述

2 回答

?
Qyouu

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,等等)


查看完整回答
反對 回復(fù) 2023-10-19
?
PIPIONE

TA貢獻1829條經(jīng)驗 獲得超9個贊

如果比較器設(shè)計為返回負(fù)值、正值或 0 來對對象進行排序,那么排序方法會如何處理這些信息?sort 方法如何從 Comparator 定義中獲取有意義的信息并執(zhí)行其操作?

基于比較器的排序方法(例如合并排序或冒泡排序)需要重復(fù)查看集合中的兩個元素并決定哪個元素應(yīng)該“排在第一位”。該決定由比較器做出,比較器返回“較小”、“較大”或“相同大小”。

這些信息就足夠了,排序方法不需要了解正在排序的對象類型。它可以重新排列集合中元素的順序,直到“左側(cè)”的所有元素都“小于”“右側(cè)”的元素。

這種方法不適用于像“桶排序”這樣的東西,它需要為每個元素本身分配絕對數(shù)值(而不僅僅是與另一個元素相比的相對值)。


查看完整回答
反對 回復(fù) 2023-10-19
  • 2 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號