如何在Lightweight-Stream-API中实现sortBy降序排序(适配API-24以下)
解决Lightweight-Stream-API的sortBy降序排序问题
嘿,刚好我对这个库比较熟悉,来给你说两种简单实现降序的方法:
方法一:使用带反向比较器的sort()方法
sortBy()本质是帮你生成了一个升序的比较器,如果你需要降序,直接用sort()方法传入自定义的反向比较器就行,代码如下:
List<Person> result = com.annimon.stream.Stream.of(persons) .filter(x -> x.getName().startsWith("A")) .sort(Comparator.comparing(Person::getAge).reversed()) .toList();
这种方式的好处是灵活,要是后面需要多字段排序(比如先按年龄降序,再按名字升序),直接扩展比较器就行:
.sort(Comparator.comparing(Person::getAge).reversed() .thenComparing(Person::getName))
方法二:先升序排序再反转流
如果你就想继续用sortBy(),也可以先按升序排好,再调用reverse()方法把整个流的顺序反转过来,代码更简洁:
List<Person> result = com.annimon.stream.Stream.of(persons) .filter(x -> x.getName().startsWith("A")) .sortBy(Person::getAge) .reverse() .toList();
这个方法适合简单的单字段降序场景,代码看起来更直观。
两种方法都能实现你要的年龄降序效果,选哪种看你的具体需求就好~
内容的提问来源于stack exchange,提问作者Asim Roy
相关产品推荐
相关产品推荐

