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());

浙公网安备 33010602011771号