You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中使用泛型Comparator排序ArrayList?并实现其compare方法

搞定泛型Comparator的compare方法实现

嘿,我来帮你解决这个问题~你的ElementComparator类已经通过<T extends Comparable<T>>限定了泛型类型必须具备比较能力,所以我们可以直接利用类型自身的compareTo方法来完成逻辑。

基础升序排序实现

如果你想要升序排序(从小到大),直接在compare方法里返回o1.compareTo(o2)就行:

@Override
public int compare(T o1, T o2) {
    // 借助T自身的compareTo实现升序比较
    return o1.compareTo(o2);
}

运行你现有的代码,输出结果会是:

-2
-1
10

降序排序的实现

要是你需要降序排序(从大到小),只需要调换参数位置或者对返回值取反:

@Override
public int compare(T o1, T o2) {
    // 两种方式都能实现降序:要么返回o2.compareTo(o1),要么return -o1.compareTo(o2)
    return o2.compareTo(o1);
}

这时候运行代码的输出就会变成:

10
-1
-2

额外说明

因为泛型约束了T extends Comparable<T>,所以像Integer、String、Double这些实现了Comparable接口的类型,都能复用这个ElementComparator来排序,通用性拉满~

内容的提问来源于stack exchange,提问作者Munificient

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:26:37