Java 如何对应用程序属性值进行排序
是否可以使用ArrayList的对象对列表接口进行排序 列表=新的ArrayList 我正在使用Spring boot的application.properties设置列表界面中的值 ModuleNames.javaJava 如何对应用程序属性值进行排序,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(
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上检查我的答案