Comparator 排序函数式接口

你的名字 2022-09-09 06:25 215阅读 0赞
  1. Comparator是一个函数式接口,功能主要用于自定义排序规则,至于其它功能这里不记录,只记录下如何排序:

目前常用的排序方法:

数组排序、集合排序、集合转化为流排序

  1. public class sortTest {
  2. public static void main(String[] args) {
  3. List<User> usersList = new ArrayList<>(){
  4. {
  5. for(int i = 0; i < 3; i ++) {
  6. add(new User("lxc"+i, 20+i));
  7. }
  8. }
  9. };
  10. // 方式一 -> 数组工具类:Arrays.sort(T[] a, Comparator<? super T> c);
  11. // 方式二 -> 集合的stream()方法:new ArrayList<>().stream().sorted(Comparator<? super T> comparator);
  12. // 方式二 -> 集合工具类:
  13. Collections.sort(usersList, new Comparator<User>() {
  14. @Override
  15. public int compare(User o1, User o2) {
  16. // 倒序
  17. return o2.getAge() - o1.getAge();
  18. // 正序
  19. return o1.getAge() - o2.getAge();
  20. }
  21. });
  22. System.out.println(JSON.toJSONString(usersList, SerializerFeature.PrettyFormat));
  23. }
  24. }

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA57qi5peX5LiL55qE5bCP5YW1_size_12_color_FFFFFF_t_70_g_se_x_16

实际开发中的案例:

若依前后端分离框架中,前台excel模板下载时,后端其实是新建了一个excel,然后把数据填充进去, 内部原理:通过反射来获取要导出的实体类中的每一个字段,添加到list列表中,循环遍历list列表,把带有@Excel注解的字段和@Excel注解中的属性添加到 一个Object[]数组中去,然后把Object[] 数组添加到fields 列表中去,最后把列表转化为流,进行排序。

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA57qi5peX5LiL55qE5bCP5YW1_size_20_color_FFFFFF_t_70_g_se_x_16

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBA57qi5peX5LiL55qE5bCP5YW1_size_20_color_FFFFFF_t_70_g_se_x_16 1

发表评论

表情:
评论列表 (有 0 条评论,215人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Comparator 排序函数接口

    Comparator是一个函数式接口,功能主要用于自定义排序规则,至于其它功能这里不记录,只记录下如何排序: 目前常用的排序方法: 数组排序、集合排序、集合转化为流