是否可以用对象ListArrayList()接口进行排序?

List</*classname*/> list = new ArrayList<>();

我正在使用Spring Boot的application.properties在List接口中设置值

ModuleNames.java

public class ModuleNames {

    private String moduleId;
    private String moduleName;

    //getters & setters.
}


控制者

@RequestMapping(value = "/getModuleNames", method = { RequestMethod.GET })
public @ResponseBody List<String> getModuleNames() {

        List<ModuleNames> moduleNamesList = new ArrayList<>();
        moduleNamesList.add(new ModuleNames("Country", env.getProperty("bulkUpload.location.country")));
        moduleNamesList.add(new ModuleNames("State", env.getProperty("bulkUpload.location.state")));
        moduleNamesList.add(new ModuleNames("City", env.getProperty("bulkUpload.location.city")));
        moduleNamesList.add(new ModuleNames("Area Pincode", env.getProperty("bulkUpload.location.areaPincode")));

        return moduleNamesList;


有谁知道如何对列表进行排序。

我试过了


moduleNamesList.sort(Comparator.naturalOrder());
Collections.sort(moduleNamesList);


但两者似乎都不起作用。请在这里帮我

最佳答案

您可以避免使用实例方法引用和Comparator.comparing方法(定义并基于该函数创建Comparable)来定义比较逻辑。

我们将使用吸气剂来构建Lambda表达式。

按moduleName排序列表:

moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName));


按相反的顺序按moduleName排序列表:

moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName).reversed());


首先按moduleName排序列表,然后按moduleId排序:

moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName).thenComparing(ModuleNames::getModuleId));


您还可以使用自定义比较器:Use This Reference

10-07 13:30
查看更多