如何在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
相关产品推荐
相关产品推荐

