温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用 Comparator 反转

发布时间:2026-07-18 14:08:30 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

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


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

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

List<Integer> 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<Integer> asc = Comparator.naturalOrder();

list.sort(asc.reversed());

自定义 Comparator 反转

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

list.sort(byAge.reversed());

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

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

四、多条件排序 + 反转

Comparator<Student> 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 版本,我可以帮你写一段完全贴合你场景的代码。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI