java comparable接口作用_分析面试题《Java中Comparable和Comparator区别》

大家面试有被问到《Java中Comparable和Comparator区别》吗?

如果还不太清楚怎么回答,就随我往下看吧。

dfa4841b02f648239431284ddba659d9.png

01Comparable和Comparator二者源码的区别

Comparable和Comparator这二者都是接口,我们先来看下他们内部都定义了什么方法让我们实现。

db6b0b172278c6a001c1cec093c3a36d.pngComparable接口

4edfa1c08e73193827a4be6794ba201e.pngComparator接口

从源码上来看,Comparable接口内定义了一个compareTo方法,接收一个对象作为参数,返回一个int值。

而Comparator接口内则定义了一个compare方法,也是返回一个int值,但是接收的参数是两个同类型的参数。

从两个接口的命名我们可以大概看出二者的作用。

Comparable,中文意思为“可比较的”;

Comparator,中文意思则是“比较器”。

实现Comparable的类,实例化的对象是可以和同类型对象比较的。所以他的compareTo方法是一个参数,一个用来和自己进行比较的对象。

实现Comparator的类,实例化的对象则是用来作为裁判比较其他对象的。所以他的compare方法是两个参数,我们的裁判就是要比较这两个对象。

02Comparable和Comparator二者使用的区别

fc0037e5c1c5ad06c96ebcfe066dc40f.png

如果我们要对上面这个Student类的对象进行比较,比较的依据是依据age的大小进行比较。

先看看Comparable怎么实现。

在上面我们知道实现Comparable是表示自己是一个可以比较的。所以用Comparable的方式实现对Student的比较,就是让Student类自己去实现Comparable接口。

be8eb42fa8486188fe4885a84298ffee.png

上面的代码实现了Comparable接口,那怎么比较呢,接着往下看吧。

d5ad1f91f89c87feea9551ce4b95e4fb.png

用Comparable来实现比较功能清楚了。

再来看看用Comparator实现比较吧。

Student类恢复到之前没有实现Comparable接口的状态。

再通过实现Comparator接口来编写一个比较器。

eea414c9d33c63c595a2534ba883a5cb.png

接着看看这个比较器怎么来用。

7d8da5ac28d083291f666b3cbfc25485.png

Java中Comparable和Comparator区别就聊到这里了。

有初学的小伙伴,推荐大家看看这本书。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值