包位置不同:
- Comparable 的位置:java.lang.Comparable;
Comparator 的位置:java.util.Comparator;
使用场景不同:
Comparable 一般是一个对象本身就已经支持自比较所需要实现的接口(如 String、Integer 自己就可以完成比较大小操作,已经实现了 Comparable 接口的
compareTo(Object obj)方法)- Comparator 是策略模式(strategy design pattern),就是不改变对象自身,而用一个策略对象(strategy object)来改变它的行为,可以将未提前实现 Comparable 接口对象相互比较,一般需要传入排序方法内,通常使用匿名类或 Lambda 表达式实现 Comparator 接口的
compare(Object obj1, Object obj2)
