很多时候由于需求的复杂性,很多直接从数据库查出的数据并不能直接返回前端,需要进行处理,处理之后又需要排序,这时候一般都会使用Stream流的Sort排序。
这里使用两种方法进行排序
1、使用java8之前的方法排序
public class Demo {
public static void main(String[] args) {
TestA testA1 = new TestA("老张", 3);
TestA testA2 = new TestA("老李", 1);
TestA testA3 = new TestA("老王", 2);
List<TestA> list = new ArrayList<>();
list.add(testA1);
list.add(testA2);
list.add(testA3);
System.out.println("排序前--:"+list.toString());
Collections.sort(list, new Comparator<TestA>() {
@Override
public int compare(TestA o1, TestA o2) {
//升序
return o1.getAge().compareTo(o2.getAge());
}
});
System.out.println("升序排序后--:"+list.toString());
Collections.sort(list, new Comparator<TestA>() {
@Override
public int compare(TestA o1, TestA o2) {
//升序
return o2.getAge().compareTo(o1.getAge());
}
});
System.out.println("降序排序后--:"+list.toString());
}
2、java8使用stream流排序
函数式编程的简洁
方式一:使用的正序
// 按照集合中类的某一个属性排序,函数式编程的简洁
voList.sort(comparing(CreatesiteNaviMenuVO::getNaviMenuOrderby));
方式二:使用倒序
// 集合中的后一个元素减去前一个元素,使用的是倒序
item2.getArticleList().sort((t1, t2) -> t2.getCreateTime().compareTo(t1.getCreateTime()));
3、正序、倒序、空值
场景一:普通排序
正序(升序)
list=list.stream().sorted().collect(Collectors.toList());
1
或者
list.stream().sorted(Comparator.comparing(Student::getAge))
1
倒序(降序)
list.stream().sorted(Comparator.reverseOrder())
1
或者
list.stream().sorted(Comparator.comparing(Student::getAge).reversed())
场景二:含空值排序
有时候数据库会有一些错误数据,但是又要求程序不能报错,这怎么办呢?
1.含空值的正序(升序)排序(按创建时间排序)
list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo))).collect(Collectors.toList());
1
如果创建时间可能为空就会报错
2.含空值的倒序(降序)排序
nullsFirst:空值放第一位
list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo).reversed())).collect(Collectors.toList());
1
nullsLast:空值放最后
list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsLast(Date::compareTo
场景三:不用Stream
// 正序
list.sort(Comparator.comparing(Integer::intValue));
// 倒序
list.sort(Comparator.comparing(Integer::intValue).reversed());
// 正序
list.sort(Comparator.comparing(Student::getAge));
// 倒序
list.sort(Comparator.comparing(Student::getAge).reversed());
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96200.html