Java 如何对应用程序属性值进行排序

Java 如何对应用程序属性值进行排序,java,list,spring-boot,sorting,Java,List,Spring Boot,Sorting,是否可以使用ArrayList的对象对列表接口进行排序 列表=新的ArrayList 我正在使用Spring boot的application.properties设置列表界面中的值 ModuleNames.java public class ModuleNames { private String moduleId; private String moduleName; //getters & setters. } 控制器 @RequestMapping(

是否可以使用ArrayList的对象对列表接口进行排序

列表=新的ArrayList

我正在使用Spring boot的application.properties设置列表界面中的值

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.sortComparator.naturalOrder

Collections.sortmoduleNamesList


但两者似乎都不起作用。请在此帮助我

您需要为ModuleNames对象编写自定义比较器,因为Java不知道如何对其进行排序,因为它不是一个基本类型

例如:

Collections.sort(moduleNamesList, new Comparator<ModuleNames>() {
        @Override
        public int compare(ModuleNames o1, ModuleNames o2) {
            return o1.getModuleId().compareTo(o2.getModuleId());
        }
    });


您需要为ModuleNames对象编写自定义比较器,因为Java不知道如何对其进行排序,因为它不是基本类型

例如:

Collections.sort(moduleNamesList, new Comparator<ModuleNames>() {
        @Override
        public int compare(ModuleNames o1, ModuleNames o2) {
            return o1.getModuleId().compareTo(o2.getModuleId());
        }
    });

或者更分类:

moduleNamesList.sort(Comparator.comparing(ModuleNames::getName)
                     .thenComparing(ModuleNames::getId));
或者更分类:

moduleNamesList.sort(Comparator.comparing(ModuleNames::getName)
                     .thenComparing(ModuleNames::getId));

您可以通过使用实例方法引用和Comparator.comparating方法来避免定义比较逻辑,该方法基于该函数提取并创建一个Comparable

我们将使用getter来构建Lambda表达式

按moduleName对列表进行排序:

ModuleNameList.sortComparator.comparingModuleNames::getModuleName; 按moduleName按相反顺序对列表排序:

ModuleNameList.SortCompariator.comparingModuleNames::getModuleName.reversed; 先按moduleName,然后按moduleId对列表排序:

ModuleNameList.sortComparator.comparingModuleNames::getModuleName.thenComparingModuleNames::getModuleId;
您还可以使用自定义比较器:

您可以通过使用实例方法引用和comparator.comparating方法来避免定义比较逻辑,该方法基于该函数提取并创建一个比较

我们将使用getter来构建Lambda表达式

按moduleName对列表进行排序:

ModuleNameList.sortComparator.comparingModuleNames::getModuleName; 按moduleName按相反顺序对列表排序:

ModuleNameList.SortCompariator.comparingModuleNames::getModuleName.reversed; 先按moduleName,然后按moduleId对列表排序:

ModuleNameList.sortComparator.comparingModuleNames::getModuleName.thenComparingModuleNames::getModuleId;
您还可以使用自定义比较器:

是否要对moduleNamesList进行排序?根据什么基础。。。。moduleId还是moduleName?@Nitika on moduleName检查我的答案是否要对ModuleNameList排序?根据什么。。。。moduleId还是moduleName?@Nitika在moduleName上检查我的答案