00:00
那么接下来呢,咱们就来说一下这两个该如何去使用,诶首先呢,咱们来讲一下这个叫compar comparable。那这个接口的一个使用,那首先呢,明确一点就是我们去比较对象的大小啊,用到了两个接口,所以这两个接口呢,你看成是定义了一种规范,什么规范呢?就是比较对象大小的啊,那么首先呢,来提一下这个叫comparable的一个使用,Comparable首先呢,大家呢,其实也并不陌生,我们呢,呃,讲string的时候呢,提过这个结构啊,就相当于这个string实现了这个comparable接口,相当于这个string呢,是不是就具有比较大小的功能了。哎,那不妨呢,咱们就先举一个例子,拿string来说明一下。哎,TEST1。那这呢呢,咱们写一下就是comparable它的一个使用举例。
01:06
哎,它的一个使用举例,那这个时候呢,我们就先拿一个现成的来说了,就是关于我们这个string的啊,那string的话呢,我们现在既然需要去比较大小,那你至少得有俩了,那不妨呢,我这时候呢,就提供一个数组。那这个数组里边呢,我就填多个字串啊,比如我写一个这个叫AA啊,写一个这个CC啊,写一个美眉是吧,写个这个这个啊哥哥啊,这是啥姐姐是吧啊弟弟啊吧啊来一个ZZ啊这Z来一个KK吧,这样嗯,这个我这写的这个顺序,再把它往前提一提吧,就是让他呢尽可能的稍微乱一些啊好,这样的话呢,我就放了几个字符串好几个,那现在呢,我就想把这个数组当中这些字符串啊,给它排个序,给他排个序,排个序的话呢,咱们有一个工具类叫aris,它有个方法呢,叫做salt,排序的话呢,还真有一个。
02:12
真有一个什么呢?真有一个这个这个嗯,结构叫object类型数组,那我们这块呢,是不是可以扔进去啊,那这个string型的数组也是作为我们object类型的一个数组的一个子类了,相当于是吧,因为每一个都string相当于object的子类,这呢也是个多态的形式,我呢就扔进去了,我扔进去以后呢,我说呀,就排好序了。我就说排我去了,排我去以后呢,嗯,那你便利一下看看呗,那我就s out一下。Ari,嗯,第二,我们来个two string,把我们的AR呢扔进去,看看是不是真排过去了。你看诶,果真是。
03:02
啊,很方便是吧,那这时候你可能会想,诶,凭啥你这个string啊,我这呢,就是写好了是混乱的,然后呢,你说排序就排序还真排成了,而且呢,默认呢,它相当于是一个从小到大的排序方式排的,嗯,究其原因就是因为我们这个string呢,它实现了comparable接口。以实现compar为接口,就得需要去重写它的方法,这个comparable这个里边呢,有一个方法叫做compare to,这个方法呢,咱们讲string的时候呢,也提过啊,这个string c o找一下这个叫compare to。这啊这个compare to它呢就是重写的咱们这个comparearable里边的这个方法,比较两个字符串大小,这呢就是它具体的比较的一个方式,就是从前往后一个个去比啊,只要发现有不一样的呢,就做一个减啊减呢如果是个负数,那说明当前的就是小。啊哎,通过刚才咱们这个例子,这个其实呢,大家看不到里边这些细节了啊,但是呢,我们能说明的就是呃,什么问题呢?哎,这里边要说的第一个点就是说像像咱们这个string啊,或者是这个包装类啊等它们呢,实现了叫comparable接口,进而呢重写了。
04:25
哎,重写了咱们这个叫compare to的这个方法。啊,这个呢,就是给了相当于是给出了啊比较两个。哎,两个对象,哎大小的方式,那么这个方式是什么呢?也就是说呢,我们通常重写这个compare to方法,一般都怎么重写呢?下边我们说第二个事情,就是重写compare to这个方法的通常的规则,哎这个柜子呢,其实咱们在前边讲一口的方法的时候呢,包括后边讲一个这个这个这个接口使用的时候呢,其实稍微提过这个事情。
05:13
啊,其实讲ECO词中呢,当然我讲过,大家还记不记得我当时这样说的啊说呢ecos呢,咱们呃首先自己重写过,重写过以后呢,后来咱说开发中其实都咱们自己不会去重写的,咱都会呢,直接去,呃这个al shift s直接去生成是吧?啊这里边没有了啊,哎,直接去生成。那么我们重写自己定义呢,去重写去去重写equals的意义是什么呢?就是我们后边呢,会涉及到去比较两个对象大小啊,到时候呢,写的逻辑跟我们ecos呢是有点像啊,所以说呢,大家呢先自己也要重写一下ES,当然我是这样讲的啊,那其实呢,就是在这块去用的啊,因为呢,我们去比较对象大小也是拿它的属性去比的,以前ecos呢也是拿的属性比,所以呢是类似的,那重写的具体规则来讲啊,我在这个PPT里边写着呢。
06:03
啊CTRLC,咱们前面呢,其实也提到过这个事儿,所以呢,大家其实并不陌生,说呢,如果当年这个对象调这个方法的对象呢,大于行参的这个obg,这呢,咱们里边是有这个参数的啊。这个我给大家补上,如果大于这OB呢,则返回正整数,表明呢,当前这个对象呢,哎,如果大于呢,返回是正整数是吧?哎,如果呢,你是这个小于的话呢,返回就是负整数,哎如果要相等呢,就返回是零。那对于咱们string或者包装类来讲,它呢,就是这样子来写的。那就这样来写的啊,它们呢,就是重写了比较两个对象的这个方式,而且呢,通常情况下,或者叫默认情况下呢,它是从小到大的顺序来排列的啊,这咱们看到这个结果呢,也是如此,那这个咱们在这哎多说一下,这个我写成个二吧,改成个三,这个呢,就是像这个string。嗯,String,哎,或者呢,是咱们说的这个包装类,呃,这个重写这个compare。
07:10
哎,Compare to这个方法以后,哎相当于它呢,哎是呃是这个这个进行了,呃从小到大的排列,哎就是这样一个事情啊这个大家了解一下,就是你知道呢,它是从小到大排的,下面呢就提到呢,就是冲洗的规则,那string呢跟包装类,显然呢,他们是满足这种规则的啊那如果说大家后边呢,需要对string或者包装类呢进行排序了,大家直接呢,诶就可以,这呢咱们是拿这个数组来举例子的啊后边呢,咱们还会讲到这个集合当中,哎集合里边呢,咱们还会涉及到叫collections啊进行排序,哎直接呢,你就像排像这个string直接呢扔进去就可以了,哎这是对于我们说的这个哎string,人家这样的结构它都已经哎实现了这个接口了,就直接可以用了。
我来说两句