1、 总结:
2、 使用Collections.sort()对ArrayList进行排序时,在Java 7环境下会依据元素的自然顺序(如String类型的字典序)执行升序排列。
3、 Collections.sort()方法支持传入自定义Comparator实现类的实例,从而灵活地指定排序逻辑,满足多样化排序需求。

4、 自JDK 1.8起,List接口新增了sort()默认方法,同样可通过传入Comparator实现类对象完成定制化排序。
5、 自JDK 1.7起,底层排序算法切换为Timsort,该算法对Comparator中compare()方法的返回值有明确约束:必须严格返回互为相反数的结果(例如-1与1),禁止使用非对称组合(如0与1或0与-1)。这是因为Timsort依赖比较结果的符号一致性来判断元素相对大小,若返回值不满足对称性要求,可能破坏排序稳定性,甚至导致程序异常或死循环。因此,在实现Comparator接口时,务必确保逻辑严谨——当a.compareTo(b)返回正数时,b.compareTo(a)必须返回对应负数,且绝对值相等;涉及相等情况应统一返回0。此规范在JDK 1.7及后续版本中持续有效,开发者需格外留意。

6、 编写自定义Comparator类以实现特定业务场景下的排序策略
7、 compare()方法的返回值必须成对互为相反数,否则排序结果不可靠;该限制自JDK 1.7起正式生效。
8、 若两元素相等,则必须返回0,其他返回值均视为非法。
9、 }
10、 };
11、 }
12、 }

13、 运行结果如下:












