00:01
来,那咱们接下来接着往下看吧,各位。这个我就不再改了,好吧。我在这儿呢,再去写一个新的。Class叫tree set test04,大家注意听啊。那么这个T04这一块呢,我想把T03里边的东西给它复制一下。这块的东西给它复制一下。拿过来到零四里边。粘过来放到这儿啊,放到这儿之后呢,接下来我这边写这个类啊,我想换成user,各位啊,换成user。嗯,换成换成。哎呀。已经有了customer呢?诶,Customer没有啊,行,就这几个类型啊,咱们自己玩一下。意思age是吧,然后呢,This age age呗,好了,那么接下来这个customer写完之后呢,我们这块呢,得换换了这个类呢,我换成customer啊。
01:11
Customer customer啊。来这都换一下。好,这边我删了删了啊,然后里边放的是customer类型。啊,然后呢,我这个叫C1吧,C2C3C4啊,然后叫customers,然后这个customers干什么呢。哎呀。嗯,这块。Customers are,然后C。C2、C3、C4。然后呢,便利谁呀,便利这个customer c customers。好,我们再来看这个程序,还是这个问题是吧,还是出这个问题各位啊。
02:00
一样对吧,说你谁啊,说你这个这个类。不能转换成comparable,那如果说我现在让我的这个类去实现了这个comparable可以用泛型,各位啊,Comparable你看泛型你看。参加比较的,参加比较谁呀,Customer啊,这样写就行了,然后一个类呢,实现一个接口,就要把接口里边这个方法加以实现,大家看这个方法是不是返回一个int类型,叫compare to方法,这个方法是不是就是刚才大家看那个源代码当中那个tree map里边的。一个一个一个一个情况,对吧?Tree map这边是不是它转成compare之后,会调这个接口里边compare to方法返回一个结果呀,这个结果是一个数字是不是,哎,是个数字啊,那么这块的话,咱们就得把这个方法加上去,Out加回车啊,Out回车,然后compare to方法就有了,各位你需要在这个方法里边干什么?编写比较的逻辑,注意啊,需要在这个方法中编写比较的逻辑,或者说比较的规则。
03:06
按照什么进行比较明白什么意思吧,哎,因为你将来会调这个方法呀,叫k.compare to方法,然后t.K呀是吧,是拿着什么呀,拿着参数K和什么集合中的每一个K。进行什么比较明白吗?进行比较。进行比较啊,返回值可能是大于零,小于零或者是等于零都有可能。都有可能啊。那放在tree set集合中的啊,放在tree set集合中的元素需要实现java.language comparable接口啊,并且实现什么呀compar to方法。
04:05
啊,Equals可以不写。Equals可以不写了啊,可以不写在这里,那么这块的话,我们呢,把这个地方要知道啊,这个其实就是那个参数吧,哎,这个位置是不是就是你看啊看以下这个方法是什么意思啊,假如说C一点。C是个顾客啊,Compare to谁啊?C2的话,那我问大家C2是不是就付给了C。那么这个里边有没有,This,各位是谁?是C1吧,你看C1COMPARE c2就是C1。C2是不是就是CC就是C2 C是C2吧。对吧,所以说C1和C2比较。的时候啊,就是谁啊,This和谁CE。
05:02
This和C啊,比较明白吗?这是C吗?这里边儿有个this啊。C就代表这个C2 C1去调这个方法,这个Z就是C1。所以这个时候呢,哎,你可以这样说,比较规则你来定啊,比较规则最终还是由由谁啊由。程序员指定的,例如按照年龄升序。对吧,或者按照什么呀,年龄什么呀,降序对不对?哎,所以说这块的话,你应该会得出两个年龄来,比如说第一个年龄,那就是this.age对不对,第二个年龄那是不是就是参数这个C它的age年龄,那么当你年龄拿到之后呢,对吧?哎。你看啊,If,如果AGE1要等于等于H2,我们当然小菜鸟可能这样写,Return一个什么呀,哎,Return一个零。
06:05
对不对?哎l if,如果说age呢,它大于什么呀,二的话,Return一个一呗,对吧?I那就return个负一呗。对吧,那这样的话,我们这个就删掉就行了,你看对吧,比较年龄呗,你看年龄有两个值啊,如果相等返回零,如果大于它就返回正数,如果小于它对吧,就返回负数,当然你这个代码其实一行就搞定了,你没必要这样去写对不对,怎么写,直接return呗,z.H减去谁啊C点就行了。大家想这样做是不是就可以了,就是你这个z.age其实就相当于是当前对象的年龄呗,c.age是不是就是你另外这个对象参加比较的这个对象他的年龄啊,如果年龄相等一减是不是就是零。是不是就是零,如果这个大这个小是不是一定返回正数,如果这个这个小这个大是不是一定会返回负数减去嘛,会返回负数嘛,对吧,所以这个结果就有可能是等于零的,也有可能是什么呀,哎,也有可能是。
07:13
大于零的也有可能是小于零的,都有可能啊,就这个方法啊,Compare to方法。啊,那么现在呢,我们再来看看这个会不会会不会这个升序啊,或者是降序排列来,我们走一个。嗯。好了,这一块的话,我们得重写一下啊,要不然我们看不出来谁大谁小,是不是重写一下to方法这个customer呢,重写to方法,各位啊,重写一下,重写兔子。来这块的话,我们直接return一个什么吗?Return一个,比如说customer中括号age等于加上双引号加上两个加号age是不是来我们来看一看,直接运运行。看看这个customer是不是升序,你看。
08:02
对吧,升序你把这两个位置调个个就是c.H减去z.H那你反过来就是顺序就不一样了。啊,你再反过来,你再去运行,你看它原先是升序,现在再去执行,你看就是降序了,你看32,三十二十五和20。对吧,所以这个地方它之所以可以排序,有有代价的,各位是说你吹赛的集合里边放的这个元素得实现这个接口,并且还要求你强行要求你实现这里边的compare to方法,然后你在compare to方法里边编写比较规则,只有你指定了比较规则,那么这个时候它的对象才可以排序。啊,对象才可以排序,就是不是随便排的各位啊,之所以前面这个字符串能排,是因为它实现了comparable接口,之所以这个inte类型可以排,是因为它实现了comparable接口,之所以你这里的customer这个类型可以在这排序,是因为你重写了,哎,你实现了这个接口,并且重写了这个方法。
09:02
你实现了这个方法,在方法里边指定了比较的一个规则。明白吧,哎,指定的比较规则。是这样的一个一个情况,各位啊。好,这个大家理解吗?这个理解吗,各位?就说这个东西大家理解理解。就是以后写的时候要注意注意什么事。放在吹塞的集合里边,这个元素是可排序的是吧?可排序的集合这个元素需要去怎么着实现comparable接口?看懂了不会写。看懂了不会写。嗯。哎,这个地方这个不会写吗。这个比较规则我是说的呀,是按照年龄排的吗。
10:01
就是按照年龄升序或者按照年龄降序吗?那为什么这是用年龄去相减呀?各位,为什么这里用年龄去相减?因为我们比较规则是按年龄排的。有同学说老师我要按名字排,怎么办?名字按照名字排,名字一样的再按照年龄排。有没有这种需求,就是说有同学就突然来,来了一个,来了一个比较规则,比较规则是什么呀?是比较啊,比较规则就是先按照年龄排序,如果年龄一样的啊,再按照什么呀,再按照名字进行排序。啊,为什么返回正数负数就可以排序了是不是?哎,没事儿,这个这个是因为什么呀,二叉树还没讲。二他树数据结构还没讲。二叉树的数据结构还没讲啊。
我来说两句