00:01
好了,那咱们接下来继续看啊,就是刚才就是说有同学就是不太会写这个比较规则,怎么去写,那么这块我再给大家演示一个例子啊,就是set test05吧。叫t set t05,然后呢,接下来在这一块呢。呃,咱们。再去写一个啊,就是说假如说有这样一个类型对吧。String类型要写吗?不用啊,类已经写完了呀。不是已经实现了吗?刚讲完呀。咱这个类不已经实现这个接口了吗。这里不是有一个方法叫compare to方法。字符串的比较你就已经写完了。对不对,你不用管这个啊。来咱们看看啊,就是说当。
01:03
这个先按照啊,先按照年龄升序。啊,如果年龄一样的。再按照什么呀,姓名升序。那如果你遇到这个情况,你比如class,比如说这个VIP是吧,哎,VIP啊,然后里边有什么呀,有name啊。还有年龄啊。是不是那提供这个构造方法,午餐的有餐的给提供一个有餐得了,午餐工造没了啊。那这边的话,我们提供一个突方法呗。行吧,哎方法,那这个方法的话,咱们都生成一下也行啊,这VIP是吧?好那么接下来我们来看一下啊,这个属性有了之后呢,我们让他去实现一个接口呗,Employs是不是叫comparable接口,是不是里边放VIP。好,那么接下来我们这个方法加上去就行了,这个方法的话就是一个compare to方法。
02:04
那这块应该怎么办呀?比较这个怎么比较啊,年。年龄吗?对不对,然后再再比较,呃,如果年龄一样的话,再按照姓名吧。那这块怎么办啊各位。怎比?嗯。假如这是那个V。然后this就是当前对象吧,他的年龄吧。对吧,哎,如果说。这个等于等于吧。喂,点age。那什么呢?就不相等呗。不相等的情况下返回谁呀?ZH减去什么v.H吧。
03:04
对吧,啊,那如果是相等的情况下,你就是年龄相等的,这是对吧,年龄相同时。按照什么,按照名字排序。名字是字符串啊,所以this.name是名字吧,啊字符串,我问大家这个东西里边有没有这个方法叫compared to吗?这个是不是已经实现这个接口了,这里边是不是有一个方法叫compare to啊,我们能不能直接调这个compare to方法呀,能吧,怎么调啊,你this.name点什么compare to呗,另外一个字符串就是V点。这样的话,直接把这结果返回是不就行了?对吧,这块不用写了,那这样写就行了。对吧,当年龄相同的时候,我们按照按照我们的一个字符串比较嘛,按照我们的名字进行比较嘛,按照名字姓名比较啊,姓名是顿类型可以直接比。
04:02
啊,可以直接比调用什么呀,就是调用compare to吧,来完成什么比较吧,是不是,那其他情况什么意思啊,Else呢,就代表什么年龄怎么着不一样对不对,哎,年龄不一样。年龄不一样,就按照年龄排呗。就这样写就行了。是吧,那这样的话,我们这边就创建对象呗,里边除set里边放VIP是不是啊,Vips等于六一个什么呀?除set对不对?好,那么new完之后呢,接下来我们VIP去去去加就行了,对吧?怎么加呀,Vips点艾我们加一个new一个VIP。这个VIP呢,我们的名字啊,假如说就叫张三。然后年龄是多少呢?20,然后接下来呢,我们再来一个比如vips.i的,然后用一个VIP,然后这个VIP呢,我们嗯,名字叫李四吧,叫张四吧,假如说张四啊张四,然后年龄是20。
05:05
啊,我故意把这个放到上边啊,然后呢,vips.id又一个VIP是不是,哎name这块的话,假如说咱们就叫做这个。啊king啊,年龄是18啊18。那vips.id再new一个VIP是不是,哎,这个VIP假如叫soft。啊,然后呢,是十十七。啊17,那么这个时候呢,我们加进去之后便利啊for循环是不是这个循环应该是VIPVIP。对吧,Vips输出这个VIP就行了。对不对,按输出就可以了,你看这个会不会排序啊,它按照什么排啊,你看比如说这个20和20相同啊。相同的情况下,按照年龄年龄排呗。对吧,那个3A应该是在前吧。
06:02
所以这条数据什么在前呀,年龄相同的对吧,年龄不一样就按照年龄比了,所以十七十八是在前。然后这两个呢在后,其中这个张三在前,张四在后,是不是你执行一下,你看看他是不是。是按照你的比较规则进行比的。第一个是17,十八二十对吧,张三在前,张四在后。对吧,因为这3A嘛,A是在前嘛,A是在后嘛,升序你看对吧,年龄相按照年龄升序排,你看升序如果年龄相同的时候。按照什么呀,我们姓名进行升序排列。对不对,哎,这这个排列的这个这个返回值很重要,就是这个最后compare to方法的最后这个返回值很重要。就compare to这个方法的返回值很重要,返回零表示相同。啊,Value会覆盖。
07:01
啊,返回大于零。啊,会将原会继续在什么。左子树上找。啊,返回小于零。看看这个啊,看底层这个这个这个这个怎么走的,Tree map一会我去讲啊讲一下它。来,小于零是往左子数上走,各位看啊,小于零会在左啊,大于零会在右子数。啊,右子数上找啊,小于零会继续在左子数上找。你看。对吧,十减去什么呀,九。等于什么呀,一。对吧,一一是大于零的。
08:03
说明什么呢,左。边。这个数字比较大。啊,比较大,这个数字比较大。所以就往柚子身上找了。所以在柚子树上找啊,这块可能不太懂是吧,一会我去讲一下啊,说说一下这个二大树的事儿,你就理解了啊,理解了那么就是这种方式代码大家会写吗?就是我觉得先不用管它啊。先不用管它,就是说呃,这个代码会写了吗。怎么做?放在这个集合里边的这个元素需要去实现comparable这个接口,然后实现compar to方法,然后在comparative方法里边写比较规则。写排序的规则就在这里,要写的是排序规则。
09:01
按照什么进行比较,就这意思啊,就这意思。
我来说两句