public class Project{ private String spaceId; private String spaceName; public String getSpaceId() { return spaceId; } public void setSpaceId(String spaceId) { this.spaceId = spaceId; } public String getSpaceName() { return spaceName; } public void setSpaceName(String spaceName) { this.spaceName = spaceName; } public String getField(String orderBy) throws NoSuchFieldException, IllegalAccessException { return getClass().getDeclaredField(orderBy).get(this).toString(); } }
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; public class Test { public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException { List<Project> projects =new ArrayList<>(); Project project =new Project(); project.setSpaceId("1"); project.setSpaceName("yu"); Project project1 =new Project(); project1.setSpaceId("2"); project1.setSpaceName("yufangwu"); projects.add(project); projects.add(project1); List<Object> list = projects.stream().sorted(Comparator.comparing(new Function<Project, String>() { @Override public String apply(Project project) { try { return project.getField("spaceId"); } catch (NoSuchFieldException e) { e.printStackTrace(); return null; } catch (IllegalAccessException e) { e.printStackTrace(); return null; } } }).reversed()).collect(Collectors.toList()); System.out.println(list); } }