【JAVA 8】 List 使用Lambda表达式操作对象字段进行升序、降序 Published on Dec 24, 2019 in 随笔 with 0 comment public static void main(String[] args) { // 初始化集合 List userList = new ArrayList(); Random random = new Random(); for (int i = 0; i < 15; i++) { userList.add(new User( random.nextInt(100), "user" + i, new Date(System.currentTimeMillis() - random.nextInt(100)))); } // 原集合 System.out.println("------userList------"); userList.forEach((user) -> { System.out.println(user); }); // 升序 System.out.println("------ascByBirthdayList------"); List ascByBirthdayList = userList.stream().sorted().collect(Collectors.toList()); ascByBirthdayList.forEach((user) -> { System.out.println(user); }); // 降序 --> 注意是在 ascByBirthdayList 的基础上,将 ascByBirthdayList 集合反转,更容易理解 System.out.println("------descByBirthdayList------"); List descByBirthdayList = ascByBirthdayList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); descByBirthdayList.forEach(user -> { System.out.println(user); }); // 升序 System.out.println("------ascByIdList------"); List ascByIdList = userList.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList()); ascByIdList.forEach(user -> { System.out.println(user); }); /* 降序 --> 注意这里不能在 ascByIdList 的基础上,将 ascByIdList 集合反转 如果这里仅仅使用 ascByIdList.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); 那么得到的结果和 descByBirthdayList 是一致的, 因为没有指明排序的字段,默认是按birthday来排序的 */ System.out.println("------descByIdList------"); List descByIdList = userList.stream().sorted(Comparator.comparing(User::getId).reversed()).collect(Collectors.toList()); descByIdList.forEach(user -> { System.out.println(user); }); } 本文由 admin 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。