00:00
行,那么关于泛莹这一章呢,我们这个知识呢,就讲完了,讲完以后呢,这个课后呢,有两道题,这第一道题呢,其实咱们上午呢已经讲过了,就是关于在集合吹set当中,诶咱们呢,不不管这个吹set当中哈,Comparable comparor,我们都去使用这个泛型的一个这个题目,然后呢,这还有一个实验二,这个实验二呢,其实是一个自定义的这个范围内的一个使用了,这块呢提到了还是这个,哎,DA当中声明这样的这个属性,提供这样的方法,然后下边呢,是拿这个具体的user啊去来充当上面这个梯类啊,以及呢,去做一个简单的测试啊,这呢就是这道题目,那首先呢,我们就按照这个题目要求啊,去定义一个叫do这样的一个自定义的发行类啊,这块呢,是咱们这个练习题啊,我们就新建一个。新建一个这个包啊EXE1好,在这下边的话呢,我们去创建这个叫do这样的一个类。那把这个呢声明我们就,哎不妨呢,就放到这个上面啊,那按照这个要求呢,我们来写,那这呢提到了说这个do呢,它是一个泛型类啊,这样我们加上这个T啊,然后接着呢,在其中声明一个map的成现变量啊,这里有个成现变量叫做map啊,这块也没有明确说,我们就先给它生明成一个private了啊这个map说map的这个键呢是string,这个值呢就是个T,对,就是咱们相当于呃,有了这个类的发型以后,我们在这个成员这个这个三角成员变量当中去使用这个类的泛型。
01:27
嗯,然后呢,这是一个map,他也没有明确说是不是要在这块呢进行实例化,咱们暂且呢,就先放到这儿,这个map呢,识别不出来了啊,我们去import一下。好可以了,接下来呢,我们去提供这样的一些方法,按照他这个要求呢,去写这个方法的这个声明呢,已经给我们都写的非常明确了,包括这个方法的这个功能啊,那不妨我这这块啊,直接CTRLC一下,哎,下边我们这块去提供啊,诶这个位置哎这么着。
02:06
把这个格式呢,我们稍微的去调一下。行,那下边呢,我们来写一下这里边这个操作啊,首先第一个说呢,我们需要呢,将这个呃指定的ID和这个ntity去存放在咱们这个map当中啊,那这块呢,存放直接我们就调了一个ma的一个put方法了啊这呢就是ID啊这呢就是这个啊ntity行这呢就是一个添加操作,其实呃就是整个呢下边这个方法呢,主体呢就是把这个数据放到我们这个map当map的这个容器当中了,在下边呢说获取指定ID对应的这个值啊这呢我们还是从这个map当中去调的,哎,我们这呢整直接呢有个get的方法,把ID呢放进去啊返回的呢就是一个T类型的直接呢我们做一个return,那如果呢,要没找到,没找到呢,本身它也返回一个now啊就完了,在下边这个呢,叫一个替换说呢,我们把这个找到这个结构当中呢,这个ID对应的那个值,把这个值呢改成这个,哎,这个值是这样子的啊,这个大家。
03:22
怎么写的呀?嗯,有没有同学就直接这样去铺了。修改的话呢,本质来讲也是个put啊,直接这样写呢,嗯,稍微差点意思啊,就是说呢,咱这叫一个修改,万一呢,用户去找的时候呢,这个ID对应的这个数据,呃,这个指定的ID就没找到,没找到的话呢,那就不应该去改了,咱们现在相当于是没找到,是不是做了一个添加了,对这就不是太合适了啊,那怎么办呢。就是你要有这个ID,我就让你去put改,你要没有的话呢,这个就默默的结束就完了啊,有同学说就先get一下,看看这个有没有这个值是吧,那万一要这个值,恰好它就是有这个ID,恰好这个值就是个闹呢。
04:11
尴尬了是吧,嗯,哎,你是拿这个值判断是不是闹来决定要不要往里put的,还有一种方法呢,是咱们不是还有一个方法,大家可能这个被常用的啊,是要con,诶我看里边有没有这个key呗,有的话呢,这块我就给你put一下,没有没有就默默结束,所以掉这个更合适一些。成,那你在这写的过程当中,你也要注意一点,就是我们这个T呢,回头呢,是我们往里边指定的一个类型,这个类型的话呢,呃,如果呢,你要是一个自定义类型记着的话呢,是不是也要考虑去重写那个E口的方法呀。是吧,要小心一点啊,那接下来下边呢提到说呃,我们呢,我们呢,把这个所有的这个T呢,呃放在一起,返回一个list,这个怎么做呢。
05:02
我们得把所有的这个嗯,Y6相当于是这个Y6了啊,都得取出来,有没有同学这样写的。直接呢调这个叫values方法,得到呢,我们这里边所有value构成的一个collection,然后直接呢去return我们这个values,但是这块呢,类型不一样啊,你又不能去改人家这个方法啊,只能是这块呢,就这么着做一个强转这样O不OK。对吗?这样做。行不这样做?说你这边需要个例呢,我这块呢,返回一个collection,直接呢,我就给你,诶这么着一下。这个咱们已有的知识是可以解释的啊,行不行不行,为什么不行。实际上呢,可以从两个角度去解释都行,怎么说啊。
06:08
嗯,凭感觉不行,那要凭感觉不行,那这个太牛了是吧,嗯,这要给人解释,就是以前呢高中呢,也遇到过这样的啊,那时候我一个前边的一个男生啊,就是特别聪明,确实很聪明,上课呢基本上也不咋听课啊,当然呢,就一考试考的分就特别高,然后呢,尤其是呃,这个这个有几个这个周围的几个同学啊,考的我我还行啊,周围几个同学呢,就老是问他说你这个怎么学的啊,因为那几个同学呢,就吭哧吭哧前面学啊使劲学啊,一般整到晚上特别晚,然后一考试还差不少分,怎么学的,他就说没咋学啊,就是瞎写呗,是吧,你听到这么说是特别欠揍啊啊就是聪明啊,就是他就学习的话很快,就是他一看那种感觉就很,就是别人呢,得强化很多次是吧,他才能够诶诶这个固定下来,他呢,就听一下他就觉啊就那么着做啊,这种感觉其实也挺重要的啊,不能忽略了这种感觉,有的时候你写代码的话呢,也得凭一些这种感觉,跟着感觉走是吧。
07:09
但是这种感觉呢,说为什么他有感觉,你又没感觉,你得多写代码,写着写着就有感觉了,有感觉以后呢,你再对一些未知问题,你再凭着感觉走啊,你别这个都没写过代码找感觉,那感觉没有啊,啊这个呢凭感觉,凭感觉有的你要说是对的,那就感觉错了啊,那这个呢就是不行,为什么不行呢。有两个可以解决的,第一个咱们说了这个values啊,我们在这个map当中的value,它应该是无序的,可重复的,那你现在呢,直接这样生猛的去转成一个绿色,绿色本身是有序的呀。你不太适合这样的一个方式,当然这个解释你可能觉得,诶,好像又听不是特别明白,还有一种解释方式,我们这个value呢,返回就是个collection,他可没有说就咱们像这种强转的操作啊,咱们已经说过好几遍了,你本质上来讲是这个类型的,你是得先生成这个类型,直接是个多肽上去了,然后你才可以强转,这是才是对的,如果你本身造的我就是new的一个object啊,你这块呢需要个person,你这样呢,把这个new object强转成个person,这是不是肯定错呀?对啊,你这个题也是这样子,我们这个value的方法呢,人家本身返回的就叫做collection。
08:27
不是说呢,返回是一个list,你把list又赋给了你这个collection强转成list,那OK,它直接呢,它就是个collection,你非要把它强转成是一个这个这个list,那肯定不对,就好比是你new的是个object,你这块呢,非要那这个整成它是吧,这是不行的啊,那么当然collection是个接口了啊,那具体呢,是呃,Collection哪个实现类这个大家呢,你去get一下它的class,你去看一看就行,这块我就不看了啊,首先呢,这样写法是错误的。那么这个既然是错误的,正确的应该怎么写,正确的应该怎么写呢?对,你就把这个VALUE6既然都已经取到了,是不是就遍历一下,然后把它装到一个新的list当中啊,只能如此了,所以我们去声明一个这个list。
09:19
啊,你一个a list。哎,这么着啊,哎同学呢,可能经常看到我左边呢是list,右边有list,说为什么长这样写,其实这个没没有为什么啊,就是短一点吧,是吧,啊写习惯了啊,你写成它其实也可以啊,这没没啥,嗯,然后的话呢,呃,我们可以呃这一行代码还是需要的,诶CTRLC哎先找到我们这个,哎所有的Y6构成的一个collection,接下来呢,你是用迭代器也好,还是用增加for也好,这都可以啊,比如我用这个增加for循环,这呢就是T类型啊,写个小T啊叫values啊去便利,然后呢,List里边我做个I的操作,把T呢扔进去搞定。
10:01
其实也没有多复杂,便利一下我们这个collection啊,取出每一个T添加到现有的list当中,然后在这个位置去return一个list,这是正确的啊,这个呢,你要写成这样,你回头你去测试的时候呢,一定就报错了,报错了就啊行,这呢是一个返回所有的value,下边说删除指定ID的对象,直接呢,我们从map当中做一个删除,咱们用的叫remove。嗯,咱们按照指定的这个ID呢,去做个删除,这个删除的话呢,咱们本身这个方法,它还可以返回你删以后的这个key对应的value,它也不需要,不需要就拉倒了。哎,就这么着啊,它也没有说返回一个布尔型啊,是删成功了没删成功了,哎都没事,那你这块呢,就简单的去remove一下得了,行,这就是我们说的这个do的一个创建啊,它呢造完以后,下边呢,我们这个T就拿一个自定义的user呢去体会的,我们这呢就创建一个user。
11:07
行,这个我们就粘过来说,这个user类当中,我们去声明叫private类型int的ID private类型int型的age,以及呢叫string型的name。行,然后别的没有提,那咱们呢,就提供一些必要的结构,哎,基本上我们现在考虑呢,他们呢,都是一个普通的障碍B啊,所以该有的这些结构呢,我们都去提供,首先一个空单的构造器给了,再给他一个代餐的构造器。嗯,给他相应的盖塞方法,三个呢都选中OK,然后再去呢,提供一个to string方法。那这样就直接OK就完了,那么这样呢,还需要加别的方法,不对啊,咱们现在呢,需要把这个T啊,我们一会呢,实例化do的时候呢,把这个T呢,就认为是user了,但由于呢,你这个呃T是存放到我们map当中了,所以我们通常呢,这个user也要去提供它的这个E的方法,那这样。
12:10
啊,这个呢,你选哪个都行啊,第一个或最后一个都可以啊,这个我们就next这样点一下行了啊,那么同时呢,他还帮我们去提供了一个哈code,这个呢,你删不删都行,留着就留着了,也没事啊,那么再回过来这个的话呢,我们就写完这个user了,接下来做一个测试,诶,CTRLC。哎,这个我们叫do,诶的一个测试。转过来好,我们看一下这个操作,那这块呢,我们写一个酶方法,嗯,首先呢,去创建do的对象,哎,因为呢是一个发型类,我们指明它里边操作这个结构就是userr啊,你一个叫DAO啊,记着这块呢,监括号补上,里边呢写不写user呢都行,这个7.0以后呢,就可以不写了啊,有一个类型推断啊,然后再接下来我们呢,拿着这个do以后,哎,我们就可以调用它其中的这个方法呢去操作了,但这说你稍微得小心一点啊。
13:11
那比如说我们首先呢,做一个保存啊,添加这个数据string string的话呢,我们写的是一个。它叫ID了啊,那叫1001吧,后边呢,我们去new一个具体的user user的话呢,我们去提供一个对象,使用带参数的构造器,这呢又提到一个ID的问题。那这这我就还写上他吧,啊A啊34姓名姓名来一个,比如这个诶周杰伦。哎,这张就填进去了,这时候你填的时候呢,稍微小心一点啊,你看我这时候这个save调它的方,诶调这个save方法的时候。我们是放到map里了,但是这时候map呢,还没有实例化。诶还没有呢,去给他这个赋一个值啊,所以呢,会导致呢过来你这时候呢,如果去执行一下呢,这个就报错了啊,诶控制人异常这个呢,是出现在咱们当前测试的第十五行,第十五行里边呢,又掉了do的第27行,在这块呢,出现控制帧是因为呢它呢没有赋值。
14:16
诶这个原因造成的,那么操作的话呢,你可以在这块显示的给他附上。或者的话呢,就是你在这个测试这块呢,测试之前先去给他设置个值,你这块呢,又是一个私有的,你再提供一个get方法呗,呃,赛的方法,这样是吧,那这块呢,咱们就用第一种方式吧,直接我在这块给它扭上,又一个呢,叫哈希map,哎这么着,那这个也是啊,可以是一个类型推断,我就直接省略掉了,你要加上的话呢,就写上一个string的一个T就行,成这样的话呢,我们就不会出现这个控制帧的一个异常啊,这个小点大家要注意一下,这个加上以后。嗯,我们这块呢,去做一个添加还可以呢,再去加几条数据,就1002啊这个嗯,这个它都叫ID了啊,这个其实根据实际问题,你看它这个是表示的什么,这个表示的什么,再去做一个调整啊,嗯,这个呢,来一个比如说20。
15:11
周杰伦来一个。昆灵吧,媳妇是吧,诶好,放进去,然后再来一个啊1003,嗯,这个10031个20,比如说这个前门是蔡一林是吧,先放一个吧,先放一个了啊行,然后这样的话呢,我就把它们都添加到这里边了,添加完以后呢,我们通过这个do,咱们有一个方法叫做list,哎,然后呢,在这al enter,哎我们呢就得到一个list,这呢,我们就直接做一个便利了,哎便利呢可以简单一点,直接你这写一个list,这样也行,哎这样也成,或者的话呢,咱们这个在昨天复习的时候呢,稍微提过啊,这个后边呢,咱们讲扎VA8的这个新特性,哎,它里边有一个叫for each方法,直接呢我们这么着system.out方法引用,诶这样也行。
16:13
好,我们执行看看输出效果。这呢,这不就把这个数据呢,就都诶获取到了啊行,这呢相当于是一个呃调list这个方法,那还可以呢,做删做修改都行啊,比如说do,咱们这个修改呢,就写到上边了啊,写一个叫update。在update的话呢,你指明你想修改是谁啊,这个蔡依林放这呢就不是特别合适了是吧,这个呃,关系比较紧张,我们就放到这儿啊,我们重新的去new一个user啊,这个位置写成100啊,这个1003了写了啊这个写一个20看30吧,哎内啊放放上这个方文山就没事是吧。好把它放进去,这个呢是一个string类型改一下。
17:05
好,那么我们呢,调这个方法相当于是把原有数据当中1003这个K啊,咱这叫K了,是针对于map来说的啊,找到这个1003的,然后把这个后边的数据呢,改成我们这个,诶下边我又做了一个list啊,没问题啊,就改成这个防火删了。啊,这这样情况,这呢是做了一个修改操作还可以呢,做一个删除操作啊,那比如说我这块呢,我就嗯在下边吧,诶do咱们做一个remove啊,这个好像不叫木叫delete。第2DELETE delete的话呢,我们把这个1002,比如说删掉啊,像昆凌这块呢,就给它删掉了,删掉以后呢,再做一个list。啊,这呢,就剩凉了。行,这呢就是咱们这样的题目啊,此时的话呢,我们do是呃,操作的叫user,那你回头还可以指定是其他的一些类啊,你再去造一个Du,这呢就指明是别的类里边呢,自然而然就操作的都是你指定的这个类型啊,这样的一道题目啊,行,这个练习题的话,我们就过了。
我来说两句