sort方法排序默认是升序 ASC
方式1:JAVA中我们可以使用java.util.Collections类的sort(List<T> list)方法对list集合中的元素排序。
方式2:JDK8之后特别是lambda表达式的盛行,而且Collections的sort方法其实是调用了List接口自己的sort方法;所以可以使用List接口自己的sort方法排序
方式3:方式2的lambda写法
方式4:Stream流的sort方法写法
集合元素是基本类型包装类型
public static void main(String[] args) {
List<Integer> numList=new ArrayList<>();
numList.add(999);
numList.add(123);
numList.add(456);
numList.add(66);
numList.add(9);
Collections.sort(numList); //使用Collections类的方法排序
numList.sort(new Comparator<Integer>() {//使用List接口的方法排序
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
});
//lambda表达式实现List接口sort方法排序
numList.sort((num1,num2)->{return num1.compareTo(num2);});
System.out.println(numList);
}
对象的集合根据某个属性排序
例如:对User对象集合根据User类的sex属性排序,默认是升序
public static void main(String[] args) {
List<User> numList=new ArrayList<>();
User u=new User();
u.setSex(12);
numList.add(u);
User u1=new User();
u1.setSex(34);
numList.add(u1);
User u2=new User();
u2.setSex(6);
numList.add(u2);
User u3=new User();
u3.setSex(99);
numList.add(u3);
//Collections类的sort方法对对象集合排序,要传集合和Comparator接口两个参数
Collections.sort(numList, new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
Integer sex1= o1.getSex();
Integer sex2= o2.getSex();
return sex1.compareTo(sex2);
}
});
//List接口自身的sort方法对对象集合排序,重写Comparator接口方法即可
numList.sort(new Comparator<User>() {
@Override
public int compare(User u1, User u2) {
Integer sex1= u1.getSex();
Integer sex2= u2.getSex();
return sex1.compareTo(sex2);
}
});
//List接口的sort方法,lambda表达式写法
numList.sort((u4,u5)->{
Integer sex1= u4.getSex();
Integer sex2= u5.getSex();
return sex1.compareTo(sex2);
});
System.out.println(numList);
}
list.stream().sorted(Comparator.comparing(Sortable::getOrder).reversed()).collect(Collectors.toList());