验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

怎么用 Comparator 反转

阅读:310 来源:乙速云 作者:代码code

怎么用 Comparator 反转

在 Java 里用 Comparator 反转排序顺序,常见有几种方式,取决于你用的是 Java 8+ 还是更早版本。


一、使用 Comparator.reverseOrder()(最常用 ✅)

适用于 自然顺序 的反转(如数字、字符串)。

List list = Arrays.asList(3, 1, 4, 2);

list.sort(Comparator.reverseOrder());
System.out.println(list); // [4, 3, 2, 1]

等效于:

list.sort((a, b) -> b.compareTo(a));

二、使用 comparator.reversed()(推荐 ✅)

如果你已经有了一个 Comparator,直接调用 reversed()

Comparator asc = Comparator.naturalOrder();

list.sort(asc.reversed());

自定义 Comparator 反转

Comparator byAge = Comparator.comparing(Student::getAge);

list.sort(byAge.reversed());

三、传统写法(Java 8 之前)

Collections.sort(list, new Comparator() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2.compareTo(o1); // 反转
    }
});

四、多条件排序 + 反转

Comparator comparator =
        Comparator.comparing(Student::getScore)
                  .thenComparing(Student::getAge)
                  .reversed();

list.sort(comparator);

⚠️ 注意:
reversed() 会反转整个比较链,不是只反转最后一个条件。

如果你只想反转某一个条件,需要这样写:

Comparator.comparing(Student::getScore, Comparator.reverseOrder())
          .thenComparing(Student::getAge)

五、总结对照表

场景 写法
自然顺序反转 Comparator.reverseOrder()
已有 Comparator 反转 comparator.reversed()
自定义规则反转 thenComparing + reverseOrder()
老版本 Java 手动交换 compareTo

如果你有 具体对象 / 排序字段 / Java 版本,我可以帮你写一段完全贴合你场景的代码。

分享到:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>