00:00
各位同学大家好,接下来为大家介绍我们的red集合数据类型set。那么已经看到这个名词,我相信屏幕前的你,如果是但凡有点Java基础,一定会对标想到我们Java集合类的哈希赛特,没错,它就是哈西赛特,来吧,老规矩。常用的命令都给大家呢进行了整理和说明,一般用这些足够了,那么前面也说过,如果不在我这个里面的,那么直接去查官网的命令手册,那么它的特点是单值多value,一句话这个K里面可以有多个value,和我们的list一样,但是它和list的区别,它的value值是不重复的,那么我们这两个如果用Java对标来理解都明白,List是要有通通有有序有重复。Sat要无通通,无无序,无重复,OK,好,那么同学们,接下来我们来看一下sat集合类型的基本操作。
01:04
来,首先S2的key member我们代表什么?添加元素,我们待会我们要给大家演示啊,如果有重复的元素还能不能添加进去,它会不会自动去重,那么第二个是变列,第三个来判断这个K里面是否存在某个元素,那么第四一个,那么就是删除元素,好1234第一组,那么它相当于一个基操,那么再连上第五个命令吧,S卡我们来。逐个给大家进行一下讲解,好S21S1好吧,那。相当于说往这个里面添加元素一一。222345,同学们请看,人家只承认几个,我这基本上是填了123456789个,但是只认几个五个,所以说自动带着去虫好那口说无凭,S members set1同学们请看,12345没问题吧,来s is。
02:13
F members,那么set,一,那么请判断一下有X这个元素在不在这个集合里面啊,没有,那么请判断一下一这个元素有没有,有五这个元素有没有?那么说白了有反回错,没有返回FALSE1和零,OK,那么好,这是我们的前三个,那么来了s rem sat1,你要删谁呀?如果说删一个没有的元素。返回零,如果上一个有的元素返回一代表删除成功,那么真的是这样吗?那么SET1大家请看,我们直接来看一下,刚才是12345,现在一是不是没有了?OK,好,这是我们的什么s re remove,那再来一个card card的。
03:02
这个card什么意思呢?是是统计现在这个集合里面有多少个元素啊,OK,那么来同学们,现在2345刚好就是四个好,这是我们第一组最基本的基操,好那么接下来第二组这个呢,非常重要。It's random member key数字它什么意思呢?从集合中随机注意什么动道展现,按照你设置的数字,比如说我从这个K里面随机,我这数字写了个二,就从这个里面随机选择两个给你展现,但是元素不删除还是保留的,对原始的数据没有变更和删减,但是这个A相当于出站弹站,那如果我这儿写个二,相当于从集合中就随机弹出。一个或者是两个元素啊,就是这个数字上设置的,那么出一个我们就删一个,好,那么同学们我们来看一下啊,那么现在s members set1这个K的话是2345,那么好,S at set1,那么12345678,我再给它加的多一点,好吧,Its number,那么SET1,同学们请看12345678好,It'random number set1,假设我这写个一,就随机选了一个数字三给我展现,我再写个三,那么就是随机选三个数字给我展现,那么注意它展现完了以后,大家请看12345678 12345678,对原始的这个数据集没有删减和update操作,不变更。
04:37
但是X pop呢就不一样了,假设一个一再来一个一,那么就是随机弹出去八和二,那么假设我再来一个二,那么这个就是随机弹出去两个,一个是展现,一个是什么弹出,那说白了就是删不删的问题,那么SAT1同学们请看1234啊,刚才1234678,现在弹出去了四个,那么现在是不是只剩13574个,OK,好,那么这个是我们的什么?第二组操作,那么第三组啊,就是剪切。
05:09
S move移动剪切,那么它的意思是把K1里面所拥有的一个元素赋值给或者迁移到K2里面。好,那么同学们请看s at set2ABC,这是一个纯纯的好不好?它根本就没有数字。那接下来s move我准备把SAT1里面的懂不懂移到SAT2里面,那么请看公式,它说的是什么?在K1里面也存在的某个值啊,那么我们需明白K1里面就是这个set几和一现在有几?假设啊,有1357,我们就把七搬过去,那么这个时候X members s1,大家请看1357是不是就没有了?那么再家来看我们的二是不是BA7C7被移植到这了?OK,那么这个呢,就是我们集合类的第三组迁移命令。好,接下来来说一下我们集合类非常非常重要的第四组。
06:07
集合运算,也就是我们高中所学的全集、差集、交集、并集,这个非常重要。我们在互联网的社交游戏类里面,这个是100%必用的,它会比买色Q极度的方便,极大的提高我们程序的性能。那么来同学们请看一下AB2个集合。没什么问题吧,A角ABC12角123AX,那么12AB 12a是不是又有交集,有并集了,好了,那么同学们,我们呢,直接呢。来处理一下,那么这个时候啊,Delete set1 delete set2,好吧,我们重新删掉,干干净净的来,那么S2的SAT1,那么这个时候第一组是什么?ABC12。AEC12好了,S set2,那么大家请看我们这个第二组,什么是123AX 123ax,好了,那么来吧,同学们。
07:12
第一个。AB2个集合的差集就是A减B,那么说白了可以是SAT1减S2,也可以是S2减S1,那么这两个有什么区别呢?那么请看一下啊,它的原则是。属于就是s different different2个有不同的,那么就是算它的差值就是。属于A但不属于B的元素构成的集合,好,那么同学们请看啊,S法,那么SET1SET2啥意思啊,属于A,那么大家请看你们俩的交集是不是12A,那么现在是不是只属于A但是不属于B的结果集是不是只有BC?那假设我们把它反过来啊,同学们。就是以谁为主,如果以A,它永远是以第一个为主,那么就是只在A里面,不在B里面的元素,那么现在大家看3X是不是只在3X只在B,也就是我们这个sat塔二里面,根本不在SAT1里面,那么这两个用SD法就是获得了它们俩的什么差几?好,那么同学们,这是我们的第一组命令,第二个这个叫什么?是不是合并并集啊,对吧,那么来吧,属于A或者属于B的元素合并后的,那么这两个UNION1说,我相信你也应该能明白。
08:34
SAT1SAT2,那么大家请看这两个是不是合并了对吧?大家汇总合并到一块不解释了,那么第三组这叫什么交集呢?都不用废话,那是不是代表两个集合的公有部分呢?好,那么同时属于A也同时属于B的公共组合is in,那么来吧。It,来,同学们SET1SET2,只有是不是A122个元素,好,那么再大家再来看一个啊,下面叫f card members key和Li,哇,好复杂,这啥呢?同学们来,这是一个什么?
09:13
7SET集合类型新出的一个命令,我们简单的解释一下,这个命令也还是很重要啊,我们做一个基数,就是去重统计的时候,他会用到,后面呢,我就会屏蔽啊,这个版本提一嘴就行,反正都是命令,我们也不用关心它是出自于5.2这个版本,还是出自于3.2还是7.0这个版本,那么来同学们听我解释,它是RED7的新命令,它的作用是它不返回结果集,啥意思呢?比如说像这个就是返回一个结果集,具体有哪些元素它没有,它的意思是它是返回结果的什么基数。那么返回有所给定集合的交集产生的集合的激素,我靠,我相信读完这个以后啊,你稍微有点懵逼,可能每个中国字你都认识,但是合起来会稍微有点懵逼啊,挺好,激素就代表去虫以后的。
10:05
数子个数有点类似于纯净水,比如说它有五个数字,去重以后只有三个,那么这个奇数就是三,这个奇数就是去虫同基数,OK,好,那么同学们,我们下面呢来看一下我们的案例。现在呢,它是这样的,S因塔是属于什么东道是不是算交集,哎,现在的话啊,我们知道了SAT1和sat塔二的交集是A1啊几个是三个,那么所以说看我的案例啊,它现在呢是三个,如果我这啊这个numbers s inter card2 K1和K2,它的意思是什么?我们来看一下number key就是。Card number case,几个K,两个K,哪两个k set1set2,好,那么现在我已经明白了这个是什么。交集的意思,OK,一回车总共有几个A12,这个是返回具体的结果值,这个是返回什么?总共它们两个交集的个数,哎,这个去重以后的基数统计,就是他们交集以后去重复以后的统计个数几个三,那它还有一些什么乱七八糟的limit米特呢?那比如说啊,我只让你显示一个。
11:24
我只让你显示两个,我让你显示三个,如果四个,那对不起,有几个就是几个,这是一个厘米的,OK,因为它这是两个K,它有可能一堆K,它的基数有可能也很大,对吧,那么这个代表。他。给定集合的交集所产生的集合基数,那杨哥这个有什么用呢?非常重要。下面来看我们的第五组sat集合在实际工程案例当中的落地应用。真正正正牛逼的是它这些集合运算,那么同学们思考一下,你们认为这些集合关系属性的话,用在哪儿比较合适?给大家五秒钟思考一下同学的回复啊,有些同学呢,很聪明,写了两个字社交对吧,那么假设。
12:10
A他有这五个朋友B有这五个朋友,那么同学们用过QQ,用过微信,是不是经常会用到一种东西叫猜你喜欢或者叫你可能认识的人,哎,比如说现在杨哥和张三,我们两个各有各自的微信好友,QQ好友,但是刚好诶发现。杨哥和张三都认识王五这个人,那么请问是不是我们两个可以推出来,王五可能同时认识我们两个人,那么这样的话,我们的社交关系用sat集合来处理是不是非常的方便?所以如果人家问你,你set集合里面。你。用到过哪些案例和落地的使用场景啊?如果你去新浪类似于这样有社交背景属性的公司,那么来吧,第一个我们来看一下微信的抽奖小程序。
13:02
啥意思啊,同学们请看这个破,我们把我们年终的时候要做一套抽奖程序,把我们所有公司的员工的。工号放到这个sat集合里面,它不会重功号不会重复。那么假设一等奖。两个。二等奖四个,三等奖六个,那么告诉我你这样是不是可以用s pop命令就做一个抽奖小程序啊,哎,所以说很复杂的功能,可能到后面就是一个命令,同学们请看现在假设啊。23208人参与,那就立即参与,就是大家要准备来抽奖,对吧,有多少人愿意参加,那么这个是不是一个SI的,那么这个K就是本次的抽奖活动,这个value就是我们的用户ID,用户ID它是不会重复的,第一步用户ID立即参与按钮点一下,我们相当于点这个按钮,前台后台调用的ready命令就是SI,这个key就是本次抽奖活动那第二步。
14:01
显示有多少人参加了,那么上面是不是有23208人参加,怎么来的?那是不是就统计一下本次抽奖活动这个K里面到底有多少人好,第三一步抽奖,从赛当中任意选取N个抽奖人,那么弟兄们告诉我这个时候是不是a random k2随机抽奖两个人,这种是什么元素不算数啊,那么看你的业务啊,因为有些业务他他认为什么你有。好上好对吧,折上折,他允许你二次重复抽奖,但是你认为就说对不起,雨露均沾,共同富裕,你不允许一个人独吃独占,你抽过一次奖以后就要弹出去,那么这时候就用pop,那么请告诉我,对于这样一个简单的抽奖小程序,你没有了解之前你觉得会很复杂,了解之后你会发现,说白了是不是也就是三四条命令的事啊,好,这是我们的意什么?微信抽奖小程序那接下来还有什么?微信朋友圈点赞查看同赞朋友那么大家都用过微信朋友圈,假如你发了一个只要你们共同好友点一赞,下面是不是会出现一堆共同点赞的朋友list列表啊?那么比如说啊,大家请看像杨哥的。
15:10
我的学生还有一些粉丝跟我聊,杨哥,这个他要去,你懂的是吧,当时我就懵逼了,我说你是不是打错字了?他跟我说,他说杨哥一看你就out了,他的意思是要去京东面试,找我要点面试题对吧,给我气惨了,那么但是呢,同学们请看,如果说啊,这条微信朋友圈被人。发现了,或者你的好友看到了,大家又是好友中的好友,你中有我,我中有你朋友圈了,那么这个时候点赞,那么这个时候是不是这个列表会嘟嘟嘟嘟,越来越多点赞的朋友头像都会看到啊,那么注意这样的功能怎么实现呢?首先新增点赞,只要有人点过了,那么是不是假设这个key叫我发布的这个消息D就是这个,这是杨哥发布的这个key对吧?那么这个key里面点赞的有哪些呢?那么。张三李四王五孙七没问题吧?那么来第二个,如果说你不想点赞了,可以取消,那么这个取消是不是s re,刚刚学过了吧,是不是取消好,再来展现所有点赞过的用户是不是s members,把这个key遍利一下,那么这个列表怎么来的?点一个赞就是SI的,取消一个赞就是re,那么最后展现已经点赞过的所有用户是不是members PU这个消息OK,再来。
16:27
那么点赞数啊,下面那个红点点是吧,有多少人点赞了,就常见的点赞的红色数字是不是a card的这个key,那么再来同学们判断某个朋友是否对楼主点赞过,那么你点过还是没点过s is member OK,所以说你看这几个命令的综合应用set这个结果集是不是在我们社交类在朋友圈展现点赞列表统计抽奖小程序里面是不是大有用处啊哎,所以说他现在啊,对于零基础的小白们别着急,你跟着杨哥来,你明白是什么理论。第二个实操,那么相当来说这些基本的命令那你要学会,因为有我也被听到过这样电话录音,好,我们就说一下set集合,请举出五个你常用常写过的命令。
17:16
那同学们,如果你做过一些案例,是不是假设他说让你说五个12345?那好,面试官,我们现在呢,我知道什么叫right set集合,你给我说出五个常用的命令,那请告诉我这个是不是考你的熟练度,那请问这个是不是也是一种面试和筛选,那再加上一个案例,你是不是就落地理论实操小总结好,那么同学们再来QQ内推,可能认识的人或者是京东上参与你喜欢类似的功能,实时上都可以用这个做来吧。这个有12345,这个有34567,这个命令我们敲过我就不敲了,那么SD是吗?是不是求一个差值SS21267,那么这个时候用户ID,那么两个人,你中有我,我中有你,你们两个共同的好友或者是。
18:06
感兴趣的话题,那么这样我们用这个命令是不是可以把它获得?那么前面讲过SD法是不是就求一个差值?那我们在这假设啊,我们S1和S2,一跟二,那么345 345都是你们两个已经共同认识的了,那么一。在S1,这个不在S3,我们就推给S2,可能一二这两个人你可能认识,哎,这样的话说不定加上好友是不是扩大我们的朋友圈呢?好,那么同学们,这个就是我们set集合,那么对于我们的社交关系,对于我们的微信抽奖小程序,对于我们的朋友圈点赞数的列表识别和展现,Set都大有妙用,OK。
我来说两句