Java实现类似SQL的独立字段反转排序问题求助
Java多字段排序:单独指定第二个字段倒序的解决方法
直接用JDK自带的Comparator就能实现,不需要额外库。你要的是name升序、lastName倒序的效果,不用给整个比较器加reversed(),而是在thenComparing里单独指定第二个字段的排序规则:
sort(Comparator.comparing(Stuff::getName) .thenComparing(Stuff::getLastName, Comparator.reverseOrder()));
这样第一个字段name会按默认的升序排列,第二个字段lastName则单独按倒序排列,和你写的SQL语句SELECT * FROM Stuff ORDER BY name ASC, last_name DESC完全对应。
另外还有一种等价写法,手动实现倒序比较逻辑,不过上面的方式更简洁直观:
sort(Comparator.comparing(Stuff::getName) .thenComparing((s1, s2) -> s2.getLastName().compareTo(s1.getLastName())));
核心就是不要给整个链式比较器加reversed(),而是针对单个排序字段指定倒序规则,这样就能实现每个字段独立控制排序方向的需求。
内容的提问来源于stack exchange,提问作者Arwinnd
相关产品推荐
相关产品推荐

