List集合的排序
2、对list集合的排序
Collections.sort()
//todo 排序处理:
/***
* 1,首先对于集合排序首先想到 内比较器 和外比较器
* 2,用内外比较器的实现手段 TreeSet
* 3, List 集合中的sort(外比较器)
* 4,Collections 工具类的 sort(集合对象),sort(集合对象,外比较器)方法
*/
@Test
public void sort(){
List<Integer> list = new ArrayList<>();
list.add(100);
list.add(13);
list.add(67);
list.add(200);
//默认升序规则(内比较器的排序规则)
Collections.sort(list);
System.out.println("--------");
// Collections.sort(list, new Comparator<Integer>()
// {
// @Override
// public int compare(Integer o1, Integer o2)
// {
// return o2.compareTo(o1);
//
// }
// });
//todo 也可以用lambda表达式
//o2.compareTo(o1) == 0 相等
//o2.compareTo(o1) > 0 o2>o1
//o2.compareTo(o1) < 0 o2<o1
//(o1,o2)->o2.compareTo(o1) 是降序
//(o1,o2)->o1.compareTo(o2) 是升序
Collections.sort(list,(o1,o2)->o2.compareTo(o1));
//todo list 中的 sort() 方法,利用外比较器制定排序规则
// list.sort(new Comparator<Integer>()
// {
// @Override
// public int compare(Integer o1, Integer o2)
// {
// return o2.compareTo(o1);
// }
// });
list.forEach(v-> System.out.println(v));
// list对象中某一属性升序
Collections.sort(list,Comparator.comparing(Student::getPlanStartDate));
// list对象中某一属性降序(可以先升序再降序)
Collections.sort(list,Comparator.comparing(Student::getPlanStartDate));
Collections.reverse(list);
利用 Ordering 排序(常用的操作)
list集合中 同一对象按照不同属性排序的方法
Ordering超全的排序手段
// 按照创建时间降序排
studentList.sort(Ordering.natural().reverse().nullLast().onResultOf(Student::getCreateTime));
//在按照状态升序排
studentList.sort(Ordering.natural().nullLast().onResultOf(Student::getStudent));