Java8對多個欄位排序
阿新 • • 發佈:2021-01-12
Java8對多個欄位排序
建立User物件
public class Users { private Long id; private String name; private String code; private Long supId; private List<Users> usersList; public Users() { } public Users(Long id, String name, String code, Long supId) { this.id = id; this.name = name; this.code = code; this.supId = supId; } }
編寫測試類
public class Demo01 { List<Users> usersList = new ArrayList<>(); @Before public void generateData() { usersList.add(new Users(1l, "張三", "20", 0L)); usersList.add(new Users(2l, "李四1", "22", 1L)); usersList.add(new Users(4l, "王五1", "20", 2L)); usersList.add(new Users(3l, "李四2", "20", 1L)); usersList.add(new Users(6l, "王五3", "22", 2L)); usersList.add(new Users(5l, "王五2", "21", 2L)); usersList.add(new Users(7l, "王五4", "23", 2L)); } @Test public void demo1() { List<Users> collect = usersList.stream().sorted(Comparator.comparing(Users::getSupId).thenComparing(Users::getCode)).collect(Collectors.toList()); for (Users users : collect) { System.out.println(users); } } }
以上程式碼含義是:通過supId欄位進行排序,如果supId相同則按照code欄位排序。結果集:
Users{id=1, name='張三', code='20', supId=0} Users{id=3, name='李四2', code='20', supId=1} Users{id=2, name='李四1', code='22', supId=1} Users{id=4, name='王五1', code='20', supId=2} Users{id=5, name='王五2', code='21', supId=2} Users{id=6, name='王五3', code='22', supId=2} Users{id=7, name='王五4', code='23', supId=2}