3 回答

TA貢獻1829條經驗 獲得超9個贊
您需要為 ModuleNames 對象編寫自定義比較器,因為 Java 不知道如何對其進行排序,因為它不是原始類型。
例如:
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貢獻1946條經驗 獲得超4個贊
您可以通過使用實例方法引用和 Comparator.comparing 方法來避免定義比較邏輯 - 該方法根據該函數提取并創建一個 Comparable。
我們將使用 getter 來構建 Lambda 表達式。
按模塊名稱對列表進行排序:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName));
按模塊名稱倒序對列表進行排序:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName).reversed());
首先按 moduleName 對列表進行排序,然后按 moduleId 對列表進行排序:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName).thenComparing(ModuleNames::getModuleId));

TA貢獻1827條經驗 獲得超8個贊
moduleNamesList.sort(Comparator.comparing(ModuleNames::getName)); moduleNamesList.sort(Comparator.comparing(mn -> mn.name));
或者甚至更排序:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getName) .thenComparing(ModuleNames::getId));
添加回答
舉報