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));
添加回答
举报