sort()和ComparaTo()有什么关系?

对一个数组进行排序,调用的不是sort方法吗,但是老湿一直在强调String实现Comparable接口的ComoaraTo()。不懂他们之间有什么联系

例1对一个String类型的数组进行排序正常

img


例2对一个自定义类Goods调用sort方法报异常,必须实现Comparable接口重写ComparaTo方法才可以排序

img

img

  • 你可以看看 Arrays.sort 的源码,里面对数组元素排序,用到 Comparable接口;

img

  • 另外 String 这个 类 是实现了 Comparable 接口的,这也是可以看到的。

img

sort()是排序,comparato()是对两个数据进行比较,想要排序,就需要先比较出两个数据的大小、先后才能有排序结果,这就会用到comparato()。但是你自定义的类型Goods没有实现相应的接口方法,所以无法进行比较。

Arrays的sort方法只对基本类型的数组支持直接排序,对于对象数据的排序,它必须指定按照对象中那个字段来排序,而这个情况是通过Comparable的实现类来告诉Arrays的。

str或者int类型的数组,sort方法内部写好了排序方法,你不用写,直接调用就行,但是如果是复杂的数据类型,比如数组中的数据是一个对象,sort方法是排不了的,需要自己实现Comparable重写一个。