是否可以用对象List
对ArrayList()
接口进行排序?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