00:00
行,这个题呢,我们就讲到这儿,下一章呢,我们讲了泛性以后,回过来呢,再把这道题呢,改一改,把它改成了使用泛型来做的,哎让这个题目呢,就更加的这个,哎算是简洁或者更加的严密啊,应该这样说,那么这个完了以后,我们这个课后的话呢,还有两个小的小问题,哎,这是一道小问题,这是一道小问题啊,然后呢,先说这一道也行,说呢,在这个list当中去除重复数据值要求呢尽量呢简单一些。这个list里边我们可能存了,比如说啊1万个数据,我们知道list当中是可以存宠物数据的,现在呢,我希望把这个里边的1万条数据呢,相同的数据过滤掉,只留一个怎么做?所以说那我就拿着第一个,我去后边找找找找找一个个比一比啊,看看有没有跟他ES的,如果有把后边那个删掉啊,一删呀,删掉以后呢,这个又是一个数组的,又得往前先移一下,刚移完,然后再往下找下个又是一个重复的啊,再删一下。
01:06
这个是不是挺崩溃的啊,显然效率就很差了啊,而且呢,你像你比完第一个,我比第二个,再比第三个,本身这个后边一个去比效率也非常差,那怎么办?诶对,这时候呢,我们就去想这个set了,Set呢,我们其实后边大家用的话呢,主要体现一个点就是它的不可重复性,而且呢,人家做这个不可重复性的判断呀,还非常的简单,不是说上来说这个元素在不在这里边重不重复啊,我一个一个去ECO4效率很差,人家不这样做,对人家呢,不是先哈气扣一下是吧,看你到底在哪儿,然后比的呢,元素其实非常有限,效率呢很高,所以我们这个set呢,通常后边大家习惯用它来做一个过滤啊,就是把这个重复的数据给你过滤掉,哎,所以此时呢,咱们就可以去new一个哈奇set,然后呢,我们这个set呢,我调一个呃叫艾德奥这个方法,呃,这其实本质上应该是先看这。
02:07
啊,我们这边有个list,这呢是测试,我这呢有好多这个数据加到list里的,有一些是重复的,然后呢,我把这个list呢,就扔到我们这个写的方法里边,出来的这个list呢,就是里边重复数据只有一个,嗯,那怎么做到呢?我们调的这个,呃,自己生成的这个方法,嗯,在这里边我们用一个哈set,然后set呢直接叫at all,咱们不是在collection当中讲过at all吗?哎,把这里边这个集合的元素都加到这里边,加的过程当中,重复的不自动的,它就给你过滤掉了嘛,哎这呢直接呢,哎,加完以后再返回就行了。那就行,需要小心的是什么呢?这呢是数字还OK,因为你直接是inte了,那如果我们要加的是你自定义的类啊,你还想把这个重复的给过滤掉,哎,对,这时候你要注意,虽然说我们把这个数据呢,你加到list里了,好像说只需要重写ES了,但是又由于你这块呢,是不是at all的时候在这用set了,所以记得这里边也要去重写那个哈,Code。
03:14
对啊,记着这个事儿就行啊,这呢是咱们这样的一个测试了啊,这个题目我们也可以CTRLC拿过来啊,呃,先把这个CTRLC一下,这就不用写了,也比较简单啊,这个大家主要去体会一下这个题目的这个思路。给我粘到这个里边了。来,我们看下这个结果啊,CC。CL位,嗯,这呢是用的一个main方法,我们可以给它改成一个单元测试方法。行,这就写完了,写完了我们直接呢,在这做一个测试。
04:02
哎,现在这个124就出来了啊,重复的这个二和四呢就都没有了。行,这要小心一点啊嗯,这呢就过了是这道问题,然后呢,我们看一下前面这道题,这道题如果大家能够做对,那基本上你关于这个set存储数据这个过程呢,应该是比较清楚了,好,我粘过来。诶粘过来了,粘过来呢,这里边提到一个问题,就是关这个person啊person呢是我们自定义这个类,而且呢,这里边还明确说了,说这个类呢,重启了哈提code和equals行,那这呢,我们把这个person类呢造出来,这个person类呢,两个参数,两个属性,一个呢是它的ID,一个是它的name,哎,我们在这个下边去新建一个person,这个呢,对大家讲,大家来讲呢,不难,Private in型的ID,死针类型的name,嗯,这块我好像直接来这调name了,那我干脆这块就别加private了。
05:11
啊,只是来测试一下这个基本的代码啊,这个实际开发中大家尽可能的属性都是私有的了,然后提供构造器。空餐的一个。代餐的一个。然后加一个兔。行这个类呢,我们就基本定义成这样了,不提供盖塞的方法了,这块呢,就是它这直接掉了,或者你这块提供盖的,把这个改成个set也行啊。好,看一下这道题。看看这个大家呢,能不能把它做对,这个题呢是有难度的,我们一块来分析,首先我拗了一个哈,Set。造了两个person,注意他们的这个还是有不同的,我现在呢,把P1和P2加进去,如果在这个位置我去直接s out一下set,这个应该大家都应该知道它的结果啊,这有几个元素啊。
06:11
对,这个应该是没有任何的意义啊,此时呢,我们输出它就应该有俩元素。OK,没问题,接下来接下来我们呢,把这个P1的name。P的内改成CC,改成CC以后我现在呢要remove PE。然后呢,我现在去做一个输出,问此时的set里边是什么。好,有同学说说就一个了,那就一个呢,这个应该你不会出错啊,就是就这个呗,啊这是说就一个的,有没有说剩俩的。
07:05
啊,有感觉是两,那两个的话呢,那就是它,嗯,另外一个因为你改成CC了,那就是1001CC了是吧。还是A呢?A,不可能的,因为你把那名不都改了吗?你要说俩的话呢,也只能是这是一个,还有另外一个对象呢,把它改成CC的那个,那哪个对呢?啊,还有同学是删了又建了一个。好,我们倒着来推,就是大家这道题呢,你拿到以后呢,假设你运行了,你看到结果了。哎,这个呢,呃,这个我我忘了一个事儿哈,咱们这里忘了去重启了是吧,咱不是说了人家这里重启了out shift s这个我们加上它啊,这个你选这个也行,选下边的也可以啊,哎,Next一下next next这就finish,接着把人家这两个方法呢重写一下啊,重写完以后呢,再回过来。
08:05
哎,我们发现呢,就是此时呢,还真是两个。啊,不是一个了,是两个,那么为什么是两个分析。这个事呢,其实具体过程咱们都讲透了啊,关键就是看你能不能灵活去应用了,来分析这块俩没有任何意义。在下面的时候呢,我们去remove一个P1,在人P1之前一定要小心他做了一个这样的事,好,我们就得关心一下这个哈1SET底层首先是个数组,我们呢把P1和P2存起来,P1P2呢都是按照各自的哈希值,然后呢再通过相应的一些算法,我们呢得确定你在这个数组中放哪个位置。哎,比如说就放这个位置,然后呢,你P2跟它的含义值肯定不一样啊,哎,不一样的话呢,这个,而且他们算出来这个,所以位置有很大的概率也是不一样的,那不妨呢,咱们就认为它俩都不一样啊,就这种情况更通用了,相当于这个P1假设我们就在这儿,P2呢就存到这儿了,这个位置是根据一开始1001A和1002BB算它的含义值,进而呢再算的缩引位置。
09:12
好放到这儿了,现在我们把这个PE的name呢,这里边原来它是A啊,注意点,他把A呢,是不是改成CC了,这个还是BB。接下来我软木皮。P,我用的是索引,那你通过这个索引是不是也一定能找到叫1001CC的那个数据啊?P现在指向的还是原来那个对象,只不过那个对象中的属性值变了啊,1001CC,我现在想删除1001CC。Remove,我们在set当中怎么去remove呢?我想删某个东西,你得判断这个东西有没有,有的话我再删是吧,那有没有的话呢,怎么判断有没有啊,诶这时候呢,对于sa来讲,是不是得先找一下哈希值啊,你说判断有没有油就删,你不能又像这个原原来前面前面讲这个list一样,一个一个的去找看看,哎,我跟你一样不,我跟你一样不,我跟你一样不,那不效率又低了吗?赛赛呢,咱们用它的目的不就是想有个先哈希值的判断嘛,哎,所以呢,我们P1呢,一找找到了是叫1001CC这个对象了,我先算一下1001CC这个对象的哈希值。
10:29
通过这个哈希值,再通过这个算法,是不是就找某一个数组中的位置了,而这个位置其实有极大的概率其实不在这儿。因为你这个P的位置呢,是按当初的AA找的索引位置,它可能找是不是就找到另外一个位置,哎,我去这个位置上找,发现这个位置上是空的,所以呢,你此时蕊木不就是没蕊木了吗。所以你下边呢,再去打印,不就相当于这两个都在吗。
11:00
是吧,哎,这就看你对sat的一个理解是不是清楚了啊好,这个呢,清楚以后再往下,再往下,我去爱的一个对象,我叫1001CC问这个时候有几个对象几个,三个吧,哎,对啊。这一看,这不就三个了吗?这个呢,你别说,哎呀,这怎么两个对象都一样了,然后我哈尼扣的E扣S也重启了,怎么还能进来呢?还是对这个本质理解是吧?这个时候的话呢,我们就是拿这个1001CC去算哈希code对应的那个位置了,那位置上这不是空的嘛,所以根本就没有e cos啊,直接就成功了,那原来你这两个还在你原来那个位置上,所以这有三个啊,不多说,然后呢,我们再艾特一下这个事儿。我再输出几个,这个三个还是四,就就是看加没加进去哈,加进去了吗?啊能加进去吗?有的人加不进去,对能加进去啊对对,大家说的是对的,所以这道题的话呢,还是非常经典的啊这个呢,还是在原有这个图基础上,这是你原来你这个P1P2的位置,这个你原来叫AA,后来你改成CC了,这个你叫BB,然后CC那个后来呢,这是跑这加的啊你现在呢,又加一个是叫1001AA的一算那个值是不是还在这啊,但你在这存,但是这俩e cos的时候,对你是CC,我现在是不是AA啊对,所以呢也可以加成共,哎这一下就乘四个了。
12:42
你看这个题还是有点难度的啊,有意思啊,这个题基本上你就你要能做出来,也能够理解清楚,说明你对这个哈赛它这个存的这个过程呢,是非常清晰了,所以关于set大家一定要注意一下,就是它一定要先e cos啊,嗯,一定要先哈扣对再去e cos,它跟那个list不一样,它之所以这样做不就是为了提高效率吗。
13:06
啊啊,一说到这个我想起这个一个例子啊,就是这也是个真事儿,这个之前呢,去深圳出差啊,其实我对深圳的印象呢,还是非常好的啊,就是因为有过几次艳遇啊啊这个深圳的话呢,大家大家有去过深圳的吗?啊有有在那待过,其实你特别能感觉到深圳跟北京那个区别,在女生方面啊,深圳的话,女生我发现这一年四季穿裙子啊啊,而且那边的阳光也没有晒的特别厉害,就是皮肤也比较好是吧?啊几次艳遇,第一次就是我去那,其实要见一个朋友,在地铁口那等她,然后这时候呢,等着等着,突然一个女生挺漂亮的,一个女生就过来说,说你在这等人吗?我说是的,她说你是谁谁谁吗?我当时第一反应竟然说不是是吧,还特别好看的一个女生哈,她可能是跟网友见面啊啥的,可能是哈,其实我当然可以说我就是那个谁是吧,啊这一次啊特别可惜,当然这一次呢,还不是。
14:07
呃,最让别人羡慕的哈,最羡慕一次呢,是跟几个也是咱们的同事,那时候说去配个眼镜哈,去那个深圳那边那个繁华区那个商场那块,有点类似于咱们北京那个三里屯啊,三里屯这个女生这个穿着呀什么的,有去过的吗?啊,有机会可以去一去是吧?啊还是挺好的啊,然后呢,我去那以后呢,就是我们几个就在那路上走,突然一个女生就搂搂住我了,你知道吗?啊,这真事啊,他搂住我以后呢,我的第一反应呢,就是第一个他是不是要这个,这个假摔啊是吧?嗯,第二个呢,是不是要要接客啊,我想大白天的也不能是吧啊,他身体也挺健康,应该不能,年龄也没那么大哈,0.5秒以后呢,呃,这个我才注意到,其实长得挺漂亮的啊,结果这时候呢?她也很诧异的看着我,对,抱错人了,她男朋友在后边都愣了哈。
15:07
就说你在干嘛是吧?嗯,他呢,就相当于是什么呢,广进行了一个哈西扣子的一个判断是吧?嗯,啊这都能拽回来是吧?啊他先看一下这个位置啊,位置呢哈,Code没错是吧,就是它的右边啊一楼结果没有ecos是吧,ECO时候其实是不对了啊,那这就错了啊对,就这两次呢,印象比较深刻,其实还有一次印象更深刻的啊,当然那次呢,是一次不太好的一种经历哈,就是呃,深圳其实女生有好多是背影杀手哈,哎,对,就是那时候,对那会儿的话呢,那会儿的话呢,是从办公室出来,因为深圳的话呢,其实比北京还要夸张一点,就是这个十点以后你想吃个拉面,你知道外边看那拉面馆都开着呢,就他们那边整个时间呢偏靠后,对,一两点的时候还有好多在那吃串呢,还是吧,对啊,真好,对,就是他这个更像这个不夜城哈,嗯,那时候基本上都是晚上十点多从这个办公室出来,出来以后呢,我。
16:07
就往那个住的地方那块走,走的时候呢,恰好在那个拐口的话呢,在另外一个女生呢,就正好走到我前面了啊,然后呢,就是从背影来看,那绝对的可以满足你各种想象是吧?啊,就穿的非常优雅啊,然后穿一个短裙,然后呢下边穿一个那个小高跟是吧,我就不具体描述了啊对,然后当时出于这个经验来讲,我说这个最好呢,就不要看脸了是吧,结果呢,就是啥呢,他走的也挺快,我走的其实跟他的频率差不多,但不是尾随啊,就是在他那个脚跟那块,大概能看到后边有个人影啊,就走了走,走了大概这个这个一小段距离,他可能老是看到那个人影在那,然后他就扭头看了一眼,当时一下子就把我给吓倒了是吧,就长在那比较难忘哈,对对,就是大家呢,有机会没,他没带喷雾哈,我也离得有点远哈,对,大家有机会的话呢,其实这个你去南方工作咱能。
17:07
挺好是吧,或者呢,你不去南方了,你在北京工作也行,就大家呢,以后有机会还是要去一些大公司是吧,尤其呢,你去这个,呃,比较好的一些公司里边,你会发现这个公司里边她招的那些女生呢,质量都挺高的,对你像这个,你像比如说你去阿里啊,去去这个百度啊,去腾讯啊是吧,女生的话,有些比如做人事的,做一些这个产品经理的,当然产品经理一般跟咱们做开发的这个先天性的这个关系呢,就稍微紧张一些是吧?啊像一些人事的HR的这块啊,就是嗯,你像去那个公司的话呢,这些好公司,那其实对技术要求不是那么高了,那这样呢,就挑学历呗,挑你的这个形象呗,是吧,气质呗,内涵呗,诶,所以你会在这个些我们所谓的稍微好的一些公司里边,你会看到这个女生,她不光这个这个这个颜值高啊,同时这个也很有内涵是吧?啊,那你呢,是不是就有一定的机会去交流是吧?啊,当然你得有这个嘴啊,你像这个我们那个同。
18:07
学就是研究生那个同学,他是去腾讯了,她就在深圳做那个游戏开发啊,然后他们是在二层,然后三层的话呢,他基本上就是一些其他的一些部门,我说这个腾讯里边应该美女挺多吧,他说确实挺多的哈,经常就下来找他们,比如办一些事情啊,行政啊或者人事啊,做些事儿啊,就是交流交流,但是呢,嘴比较笨,就是你看着人都挺好的是吧,而且还知道是单身,但是呢,你就不知道怎么张第一堆张张嘴说说一些事情是吧?啊所以以前呢,就是说了一个段子,网上写的啊,说这个公司呢,有两个成员啊,一个呢技术特别好,一个呢技术特别差啊,技术特别差的个技术,呃,不能说特别差,一般啊,然后呢技术一般,这个呢,写代码老是出问题啊,这个测试呢,就是一个女生啊,说长得还挺好,然后呢老出问题,这个测试的就老找这个成员,最后呢,两人成了情侣眼了,说那技术特别好的呢,没有机会是吧?啊啊,就是交流的机会太少了是吧。
19:07
行,那回过来呢,大家把这个两个题目呢,可以做一做啊嗯。
我来说两句