一文搞定 Java中的 comparable和comparator接口

一、简介

comparable 和comparator 都是接口类型。comparator 是泛型接口。comparable 我们一般也称其为自然排序,其中包含有抽象方法 compareTo(obj s)。

comparator我们称其为定制排序,其中包含

二、comparable 接口

1,Arrays类里封装了comparable接口,所以Arrays类中的sort(obj[] s)可以实现数字,字符串等类型的排序。

一文搞定 Java中的 comparable和comparator接口_第1张图片

2、自定义类实现comparable 接口。

这是一个泛型接口,自定义类实现接口时必须把具体的类型传给comparable接口(如上图中 comp类型)。实现了某个接口,就必须重写该接口的所有方法,如下图重写 compareTo方法。

3、这样就能实现对自定义类的排序了。下面我们给一个示范例。

问题:我们有一个comp类,它包含一个String 类型的名字,一个int 类型的年龄。我们要建立5个comp对象,然后按照他们年龄升序的方式输出,当他们的年龄一样时,按名字字母顺序输出。

代码如下:

一文搞定 Java中的 comparable和comparator接口_第2张图片

一文搞定 Java中的 comparable和comparator接口_第3张图片

运行结果:

二、Comparator 接口

1、里面有一个compare()方法。使用时需要重写。

2、我们将上个问题 用Comparator接口实现。代码如下:

一文搞定 Java中的 comparable和comparator接口_第4张图片

 

一文搞定 Java中的 comparable和comparator接口_第5张图片

 

结果如下:

一文搞定 Java中的 comparable和comparator接口_第6张图片

三、小结

1、使用Comparator接口不需要类实现这个接口,Comparable接口需要类实现这个接口,并重写里边的comppareTo方法。

2、在使用Comparator接口时,我们用到了匿名接口。

3、它们都是泛型接口,需要指定参数类型。

 

 

 

 

 

 

你可能感兴趣的:(Java,接口,java,多态)