• 其实都差不多。
  • 基本类型大多都实现了Comparable接口,比较方式compareTo(T t)已经固定下来了。如果我们对原来的比较方式不满意的话,可以另外实现Comparator接口重写compare(T t1,T t2)。
  • 其他类如果要实现自己的比较方式的话,推荐实现Comparable接口,不过由于泛型已经限定下来了,要比较也只能比较两个相同类的对象。比如说比较一下谁的年龄比较大之类的。
  • Comparator还可以作为一个外比较器,即不需在定义类的时候就实现它并重写compare(),这个比较器不依附于要比较的对象,它可以单独写单独用。详见:Java8已定义的函数式接口