00:00
好,那咱们把刚才说的这个练习呢,咱们给大家讲了,这呢,其实也是咱们这个课后的一道这个实验一啊,就是这个实验一了,好我们来说明这个题目,那说明这个题目的话呢,我们就不在这个D07下去说了,S2C下新建一个包啊,这个呢,我们在原有的基础上呢,做一个修改啊艾特硅谷点啊EX12,把咱们之前的这个一个两个三个CTRLC一下放在我们这个CTRL啊exe这个包下啊好,这个呢,我们就都先都关掉,打开这里边的,从这来看,先来看我们这个问题一,这个问题一呢叫自然排序,就是呢,把咱们这个employee造的这员工呢添加到我们的这个吹菜当中。啊,就是完事啊,嗯,然后指明了这个自然排序的里边,咱们按照这个员工的什么排呢。啊,按照这个name呢进行排序的,好,那咱们把这里边儿凡是涉及到能用泛型的,咱们都给它改成泛型的一个情况啊,对比一下改之前和改之后的一些区别点啊,那么首先咱们从这个问题出发吧。
01:06
这块呢叫吹ET,吹ET呢,你点开它呢,带泛型了啊,那这块我们就需要指明,那这个它的类型是谁,对,是employee,因为呢,这个类型就决定了我们往里边填的类型,咱们这填的是employee,所以这呢就得是employee,好,这个位置,这个位置,哎,大家看它这也有一个这个提示了哈,哎,我们这块呢,首先在你U后边构造器这个位置呢,你需要写上这employee。这呢是一个正确的情况啊,这是个正确的情况啊,实际上呢,这块有个新的一个特性啊,这个新的特性呢,我写到咱们这个位置吧。我写到这儿吧,啊,以它为例说一下,这呢是咱们一个标准的写法,然后呢,你想啊,咱们这个位置写啥,是不是这个位置通常就是啥,那既然都一样,所以呢,我们后边这个呢,其实可以省略掉。
02:03
啊,这呢是咱们这个,哎,应该是在这个JDK7的时候的一个新的特性啊,一个小特性啊,类型推断啊。啊,就是这里边呢,我们就可以不用写了,这里七以后呢,大家就可以这样去处理,哎,反正你跟前面也一样,就省略了这个样子,那这块呢也类似的,你可以把这个呢employee呢给它省略掉,好接着往下看,我这个时候呢,指定了我们的吹set是一个泛型的了,然后呢,我们在这里边去做A的时候,你看我这个set点我去ADD就只能是一个employee,哎,是这样子的啊。那行,我这呢往里边去添加,那添加完以后呢,你下边做一个特的时候呢,这个位置就也不用这样了。我们直接在这个位置al enter,哎,你看它生成的就都是带泛型的了,然后这个时候呢,你调那方法,这个方法返回的,那在这呢,你。在这没有给我们很好的提示了啊哎,那这块呢,我们想看的清楚一点的话呢,你就直接自己呢写一下啊,E点调next,那返回的就是employee。
03:12
哎,这个是employee,哎,我们输出一下这个employee啊,这样这样就成啊行这呢我们就都加上这个泛型了,那这块加上泛型了,其实还有一个位置可以加,就是我们employee呢,它按照这个叫自然排序,它呢去实现了我们的comparable,这个comparable的话呢,也有一个泛型。这个泛型它就影响了我们这里边的叫compare two方法上面是什么,这就是什么,所以咱们之前用的时候呢,没有指定,没有指定的话呢,导致你这个呢,它就认为是object了,嗯,那现在呢,我们给它加上在实现compareable的时候呢,我们指明这些谁对,就是你这个comparable呢,是涉及到比较的,你想比较谁这就写谁,咱们想比较的是employee的大小,所以这呢就写employee,写完以后,这时候其实提示呢,就是我们这个方法有问题啊,这个方法有问题,你看就相当于啥意思呢,你把这个注释掉,你让它自动去生成,看看al enter。
04:13
哎,它自动给我们生成里边,你看就是employee了啊employee了,那这是原来的一种写法啊,没有泛行时。哎,没有指明这个,哎,反行时的这个写法。下边呢,就是上边这个呢,就是我们指明以后的啊,那指明以后我们看到这个方法的形态就变了,那你就不用说一上来判断一下它是不是一个employee了,它就是对直接呢,我们做一个return。这个呢,不是伊拉是O,哎哟就哎哟这是O,这是个O,这就完事了,就是我此时呢,诶我只能是比employee不是employee的,这个呢也都不用写了,就这样一行代码搞定,那那回过来我们测一下,看看这个改完以后呢,对不对,走没有任何问题。
05:14
按照我们这个,呃,姓名呢进行了一个排序啊好,这呢是我们说的这个自然排序这一块,那接着呢,咱们再回到上边这个叫定制排序这个位置,咱们也做一个相应的调整,这块呢,我们仍然是来放的叫employee了,哎,还是放employee这个位置呢,记着加上一个这个监控号,这样写就可以了。然后嗯,先考虑一下后边这块啊,这个T这块位置我们也加上一个啊,这个你对应过来也是employee啊,里边这个ne方法直接呢也是employee了,哎,我就不单把它那个单独拿出来让大家体会了啊,然后呢,我们这个,呃,Employee这块呢,是在我们的这个比较器当中进行操作的啊啊这个大家要注意一个问题,就是咱们这个定制排序啊,定制排序里边你比的是哪个类型,我这块呢就填哪个类型的对象,你这个填的是employee,那你这块compare这个T写谁啊,对,那就写employee呗,所以这个位置呢,你就写上一个叫拼音,哎,Employee我这写上以后立马这块提示我有问题了,是因为你在这个T是不是就决定了这个方法的这个类型了,哎,你得把这个得改一下是吧,所以这块我们从这到到这啊,我再整体注意一下,哎,这是咱们这个诶。
06:35
在这啊,呃,使用这个泛型之前的这个写法啊。好,那下边呢,我们在这让它自动生成一下al enter,那这个呢,只关心它就行啊OK啊,这这就出现在这了。哎,这个是我们使用泛型以后的这个写法,行,这个时候呢,它已经是这个employee了,所以就省了我们去做一个判断,做一个强转的过程,直接呢,我们就可以直接调这里边的这个逻辑了,一直到这吧,CTRLC一下。
07:15
哎,CTRLV诶打开,哎这个时候呢,呃,稍微调一下我们这个呃类型啊,这叫O1了。那这叫O2啊,方式一,这个咱们给阻止掉了,这个往前移还移不了了,这个我自己往前拽一下啊。那这个咱不用它,但是这个让它这个格式呢,稍微对应一下啊。
08:03
行,那咱们这呢,用的是这个方式二,这是咱们这个之前讲课的时候啊,没有在这里边去比,直接呢,把这个逻辑又写到咱们这个my date里了,所以直接这样的去比了一下,那直接这样比的话呢,你就想,哎哟my data这块好像也得调一下是吧?啊这个位置呢,我们写谁啊。这个写谁写birthday birthday是变量吗?你得写类型嘛,写谁能写employee。是employ吗?我这时候呢,让咱们my data实现这个接口,我想让谁去能有排序的功能啊,是不是my date呀,你只是在咱们这个测试当中,你调用了一下my data这种能力吗?就像说呢,咱们之前写法,你想给employee排序,咱们呢,这里边这不是写的它,然后咱们在这个string在里边你调这个string呢。
09:00
调string的这个方法了,这其实呢,你借用了一下string具有排序的能力啊,你借用了这个string这个排序的能力了啊,那么回过来,那你在我们这个麦date里边啊,你定制排序呢,是借用了一下这个my date这种排序的能力,所以这呢写谁啊,是不是就写my date啊啊然后这块呢,我们再al enter一下啊,这里边就这样写就呃用不着呢,这个还是这个样子的了,所以我们还是直接呢就拿到这到这CTRC一下。诶,CTRLV过来,上面这个呢就不要了。哎,这是原来这个写法啊,现在是这个新的写法,这个呢叫O,那下边好几个M把这个改了吧,哎,这就行了,行,那么回到咱们这个测试这块呢,咱们相当于是这个在这个位置。来借用了一下,我们说my data这种具有排序功能的这个能力啊,诶我们直接做一个return这个方式一这个或者我这个我就删了哈,挑了半天算了,不要了,直接这么着。
10:03
搞定啊直接呢,按照我们这个B的这个my date进行一个排序测试。嗯,一样啊,这个54年65年这样行,那这样的话呢,咱们就把这个客户的这个实验题呢,其实就做完了,大家呢去体会一下,在这里面呢,呃,涉及到了这个吹ET,涉及到了咱们这个比较器,他们呢,只要声明当中有泛型,我们后续呢就都可以加上这个泛型,加上以后跟我们涉及到这个集合中的这个情况是一样的,只要你在这个实例化的时候呢,指明了泛型的具体类型了,那么你这个类当中或者接口当中定义的这个内部结构自动的也就转化为你生命的这个反省类型啊这样的一种情况了,好,这个大家去体会一下。
我来说两句