1、Collections.sort()
//升序排列
Collections.sort(list, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
return s1.getAge().compareTo(s2.getAge());
}
});
1
2
3
4
5
6
//降序排列
Collections.sort(list, new Comparator<Student>() {
public int compare(Student s1, Student s2) {
return s2.getAge().compareTo(s1.getAge());
}
});
1
2
3
4
5
6
//多条件-先年龄升序、后分数升序
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;
}
});
1
2
3
4
5
6
7
8
9
10
//如日期集合List<Date> list = new ArrayList<>();
Collections.sort(list, new Comparator<Date>() {
public int compare(Date s1, Date s2) {
return s1.compareTo(s2);
}
});
1
2
3
4
5
6
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));
1
2
3
4
5
6
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());
//多条件-先年龄升序、后分数升序
list = list.stream().sorted(Comparator.comparing(Student::getAge).thenComparing(Comparator.comparing(Student::getScore))).collect(Collectors.toList());
1
2
3
4
5
6
7
8
9