在Java 8中,List接口支持使用sort方法排序
listDevs.sort(new Comparator<Developer>() {
@Override
public int compare(Developer o1, Developer o2) {
return o2.getAge() - o1.getAge();
}
});
一. 使用Lambada表达式实现Comparator接口
listDevs.sort(new Comparator<Developer>() {
@Override
public int compare(Developer o1, Developer o2) {
return o2.getAge() - o1.getAge();
}
});
用Lambada精简后为
list.sort((Developer o1, Developer o2)->o1.getAge()-o2.getAge());
二. 使用Comparator接口下的方法排序
按照List中对象的id属性升序
list.sort(Comparator.comparing(Stu::getId))
按照List中对象的id属性降序
list.sort(Comparator.comparing(Stu::getId).reversed());
多条件升序
list.sort(Comparator.comparing(Stu::getId).thenComparing(Stu::getSid));
id升序,sid降序
list.sort(Comparator.comparing(Stu::getId).reversed().thenComparing(Stu::getSid));
三. 使用Collections.sort()方法排序(不推荐)
Collections是集合的工具类通常提供一系列操控集合的方法
- void reverse(List list):反转
- void shuffle(List list):随机排序
- void sort(List list):按自然排序的升序排序
- void sort(List list, Comparator c):定制排序,由Comparator控制排序逻辑
- void swap(List list, int i , int j):交换两个索引位置的元素
- void rotate(List list, int distance):旋转。当distance为正数时,将list后distance个元素整体移到前面。当distance为负数时,将 list的前distance个元素整体移到后面。
可以利用Collections的sort方法对集合进行排序
Collections.sort(student, new Comparator(){
public int compare(StudentVo p1, StudentVo p2) {
return Integer.parseInt(p1.getAge()) - Integer.parseInt(p2.getAge());
}
});
利用Lambada简化后为,感觉相比第一种方法,多此一举了已经
Collections.sort(listDevs, comparingInt(Student::getAge));