3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
您需要為 ModuleNames 對(duì)象編寫(xiě)自定義比較器,因?yàn)?Java 不知道如何對(duì)其進(jìn)行排序,因?yàn)樗皇窃碱愋汀?/p>
例如:
Collections.sort(moduleNamesList, new Comparator<ModuleNames>() {
@Override
public int compare(ModuleNames o1, ModuleNames o2) {
return o1.getModuleId().compareTo(o2.getModuleId());
}
});
或者
moduleNamesList.sort(new Comparator<ModuleNames>() {
@Override
public int compare(ModuleNames o1, ModuleNames o2) {
return o1.getModuleName().compareTo(o2.getModuleName());
}
});

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以通過(guò)使用實(shí)例方法引用和 Comparator.comparing 方法來(lái)避免定義比較邏輯 - 該方法根據(jù)該函數(shù)提取并創(chuàng)建一個(gè) Comparable。
我們將使用 getter 來(lái)構(gòu)建 Lambda 表達(dá)式。
按模塊名稱對(duì)列表進(jìn)行排序:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName));
按模塊名稱倒序?qū)α斜磉M(jìn)行排序:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName).reversed());
首先按 moduleName 對(duì)列表進(jìn)行排序,然后按 moduleId 對(duì)列表進(jìn)行排序:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName).thenComparing(ModuleNames::getModuleId));

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
moduleNamesList.sort(Comparator.comparing(ModuleNames::getName)); moduleNamesList.sort(Comparator.comparing(mn -> mn.name));
或者甚至更排序:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getName) .thenComparing(ModuleNames::getId));
添加回答
舉報(bào)