stream流倒序排序_Stream流排序

很多时候由于需求的复杂性,很多直接从数据库查出的数据并不能直接返回前端,需要进行处理,处理之后又需要排序,这时候一般都会使用Stream流的Sort排序

场景一:普通排序

正序(升序)

list=list.stream().sorted().collect(Collectors.toList());

或者

list.stream().sorted(Comparator.comparing(Student::getAge))

倒序(降序)

list.stream().sorted(Comparator.reverseOrder())

或者

list.stream().sorted(Comparator.comparing(Student::getAge).reversed())

场景二:含空值排序

有时候数据库会有一些错误数据,但是又要求程序不能报错,这怎么办呢?

1.含空值的正序(升序)排序(按创建时间排序)

list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo).reversed())).collect(Collectors.toList());

如果创建时间可能为空就会报错

2.含空值的倒序(降序)排序

nullsFirst:空值放第一位

list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo).reversed())).collect(Collec

很多时候由于需求的复杂性,很多直接从数据库查出的数据并不能直接返回前端,需要进行处理,处理之后又需要排序,这时候一般都会使用Stream流的Sort排序 场景一:普通排序 正序(升序) list=list.stream().sorted().collect(Collectors.toList()); 或者 list.stream().sorted(Comparator.comparing(Student::getAge)) 倒序(降序) list.stream().sorted(Comparator.reverseOrder()) 或者 list.stream().sorted(Comparator.comparing(Student::getAge).reversed()) 场景二:含空值排序 有时候数据库会有一些错误数据,但是又要求程序不能报错,这怎么办呢? 1.含空值的正序(升序)排序(按创建时间排序) list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo).reversed())).collect(Collectors.toList()); 如果创建时间可能为空就会报错 2.含空值的倒序(降序)排序 nullsFirst:空值放第一位 list=list.stream().sorted(Comparator.comparing(l -> l.getCreateTime(), Comparator.nullsFirst(Date::compareTo).reversed())).collect(Collec
经验分享 程序员 微信小程序 职场和发展