list集合根据某字段进行排序
1、Collections.sort()
//升序排列 Collections.sort(list, new Comparator<Student>() { public int compare(Student s1, Student s2) { return s1.getAge().compareTo(s2.getAge()); } });
//降序排列 Collections.sort(list, new Comparator<Student>() { public int compare(Student s1, Student s2) { return s2.getAge().compareTo(s1.getAge()); } });
//多条件-先年龄升序、后分数升序 Collections.sort(list, new Comparator<Student>() { public int compare(Student s1, Student s2) { int i = s1.getAge().compareTo(s2.getAge()); if(i == 0) { i = s1.getScore().compareTo(s2.getScore()); } return i; } });
//如日期集合List<Date> list = new ArrayList<>(); Collections.sort(list, new Comparator<Date>() { public int compare(Date s1, Date s2) { return s1.compareTo(s2); } });
java8可使用
2、list.sort()
//升序排列 list.sort((x,y)->Integer.compare(x.getAge(), y.getAge())); //降序排列 list.sort((x,y)->Integer.compare(y.getAge(), x.getAge())); //如日期集合List<Date> list = new ArrayList<>(); list.sort((x,y)->x.compareTo(y));
3、list.stream()
//升序排列 list = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList()); list = list.stream().sorted(Comparator.comparingInt(Student::getAge)).collect(Collectors.toList()); //使用lambda表达式 list = list.stream().sorted(Comparator.comparing(e -> e.getAge())).collect(Collectors.toList()); //降序排列 list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList()); //多条件-先年龄升序、后分数升序3、list.stream() list = list.stream().sorted(Comparator.comparing(Student::getAge).thenComparing(Comparator.comparing(Student::getScore))).collect(Collectors.toList());
4、多字段排序
多个字段的排序
Comparator<对象的类名> comparator = Comparator.comparing(对象的类名::方法名1, 升序或降序).thenComparing(对象的类名::方法名2, 升序或降序));
如果是三个以上的字段排序,就继续使用 thenComparing 连接
//多条件-先年龄升序、后分数升序 list = list.stream().sorted(Comparator.comparing(Student::getAge).thenComparing(Comparator.comparing(Student::getScore))).collect(Collectors.toList()); //或者用下面的方法 Comparator<Order> comparator = Comparator.comparing(Order::getAge).thenComparing(Order::getScore, Comparator.nullsLast(Comparator.reverseOrder())); List<Order> list2 = list.parallelStream().sorted(comparator).collect(Collectors.toList());
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)