¿Es posible ordenar una List
interfaz con el objetivo de ArrayList()
?
List</*classname*/> list = new ArrayList<>();
Estoy usando application.properties
de arranque primavera para ajustar el valor en la interfaz de lista
ModuleNames.java
public class ModuleNames {
private String moduleId;
private String moduleName;
//getters & setters.
}
Controlador
@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;
¿Alguien sabe cómo ordenar la lista.
He intentado
moduleNamesList.sort(Comparator.naturalOrder());
Collections.sort(moduleNamesList);
pero ambos no parece trabajo. Por favor, ayúdame aquí
Puede evitar la definición de la lógica de comparación mediante el uso de una instancia de referencia y el método Comparator.comparing - que extrae y crea una Comparable con base en esa función.
Vamos a utilizar los captadores para construir la expresión Lambda.
ordenar la lista por ModuleName:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName));
ordenar la lista por ModuleName en orden inverso:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName).reversed());
ordenar la lista por primera ModuleName y luego moduleId:
moduleNamesList.sort(Comparator.comparing(ModuleNames::getModuleName).thenComparing(ModuleNames::getModuleId));
También puede utilizar comparador de encargo: Utilice esta referencia