00:01
各位大家好,刚才呢给大家演示了red里边的常用数据类型,咱们刚才演示了列表list的,那下面呢给大家演示一下集合set的基本操作,那咱们来看一下,首先这里写到red里边的set对外提供的功能其实跟list的很相似,也是一个列表功能,而set相对list的它的最大区别是什么呢?就这句话叫做自动排除呢,比如它里边的元素第一个不能重复,第二个里边是无序的,所以它里边就是这个特点,跟例子就是主要这么一个区别。而site我们看到啊,Site这里写到它是string类型中的无序集合,其实底层是一个什么呢?就是一个哈希表,而通过哈希表我们可以快速找到你那个元素那个那种通过位置快速找到,所以说他在做添加、删除、查询的时候,复杂度都是O1,通过找一次,那快速找到就是底层是一个哈希表,做到通过哈希表直接快速定位到里的内容中来,所以这是关于我们说的site这么一个集合,那set里边呢,有哪些命令,下面给各位来演示一下,跟我们的例子基本上类似,我下面。
01:21
快速演示一下。首先我们来到里边,我还是把它先清空一下。然后清空之后,我们先做第一个操作,用这个命令叫sa的,咱可以添加一个或者多个元素,它里面的元素啊,它起名叫member成圆,跟我们的list的基本类似,那我下面来添加一下,我们用sa的,比如这个K,我叫K1,咱们加上这个V1 V2 V3,然后一回车,现在我就加入了,这么就是K1是它的KY6值是V1 V2 V3,然后再通过这个命令叫s members加上K,能取出你这个集合中的所有值,那我们来取一下。
02:07
Members k1,然后大家看取来的值是不是就是V3 V2V1啊,咱们把它就取出来了,所以这是两个最基本命令,然后除了它之外还有一个下一命令,咱用这个叫sis member,能判断你K是否含有对应的这个值,那我们来做个判断,Ss member,那我写一下。比如现在我们用这个K1,然后里边我们的值叫V1,大家看反应是不是一啊,表示K1中存在V值,比如说再写一个V11,反应值是不是零啊,表示K1中不存在V11,所以这是一个判断,然后还有下一个返回集合中元素的个数,咱们来写一下啊,叫S卡的。K1元素个数是不是有三个,所以这几个命令应该很简单,各位给它应该自己能够快速给它点出来,然后看下一个啊,就是删除结构中的某个元素,用s rem,那我们来测试一下,比如现在K1里边我就把这个V1和V2删掉,然后咱们可以再看一下s members。
03:25
K1里边只有这个V3,现在把它就删掉了,所以这是一个命令,另外还有下一个叫s pop,随机从结构中吐出一个值,就给它取出来一个值,如果值都取完了,那这K也就不存在了,那我们来测试一下啊,比如说为了明显,我给他再重新加一个数据啊,咱重新操作一下,我用sa的,比如我们叫K2,再加一个就是V1。VR。V3的这个V4,然后现在用S泡泡K2,大家看它吐出一个V3,然后吐出一个V1,是随机吐出里边的某个值,所以这个叫S泡泡。
04:10
然后除了这个之外呢,还有下一个叫s RA number,它随机从集合中取出N个值,注意是取出N个值,但是不会从里边把这个东西给它删掉,那咱们来测试一下啊,S round number,然后K加上你取出来那个值的那个数量。测试一下啊K2,比如我们取出两个,注意每次取的应该是随机的啊,就是不确定的啊,它里边就可能一样,可能不一样,随意从里边取出N个值,这是它里边的这么一个操作,然后除了这个之外,还有一个叫做S木,这什么意思呢?它表示啊,把集合中的一个值从一个集合移动到另一个集合中去,所以它里边有这么一个啊,包括下面这些应该针对都是多个集合操作,那我下面给各位咱们快速都演示一下啊这几个操作。
05:07
首先我们看这个S目,为了明显,我把这个数据呢给它先清掉,咱们重新进行操作,那比如说我重新添加A的,我们叫K1,然后加入这个V1 V2 V3,然后我再添加一个sadd,我们叫K2里边加入比如说这个V3。V4V5咱们加入这个数据,然后用这两个就是集合我们进行操作,首先我们看第一个操作S5,这个操作什么意思呢?它指的是把集合中的一个值从。一个集合移到另一个集合中去,那咱们来做操作,比如现在我写一个S木,咱们加个K1,再加个K2,然后里边我这里边给他传一个值,就是这个V3。
06:02
现在我们来回车,然后大家看返回值是不是一啊,而这个操作最终会变成什么样的效果呢?那我们来试一下啊,比如现在我用s members。我们叫这个就是啊,写错了啊,Members我们叫K1。大家看啊,在K1中是不是就没有V3了,因为V3它就放到了我们的K2中,那咱们看一下K2 K2中这个值,因为K2中的已经存在了相同的V3,所以它就没有再进行添加,因为它不能重复嘛,所以这个叫S木,把一个结构中的一个值移到另一个机构中去叫S木,然后除了这个之外,大家看这个叫S英特尔,它是取两集合的交集,这个union取并集,然后这个抵费取的是差集,那咱们快速演示一下啊,先取一下他们这个叫交集,因为目前两个集合中就是V1V2,然后V3V4V5啊,应该没有交集,那咱们为了明显啊,我把数据咱们再加一个。
07:05
Sa的,我叫K3,然后加一个,比如这个叫。V4。V6V72个里边应该都有这个V4,那我们取一下它这个就是交集用这个S英特尔,咱取这个就是。K2和K3,大家看取出值是不是就V4就是它们的交集,然后再取一个就是这个union,取他们这个并集,并集呢,就是两里边的所元素,那我们来一个K2K3,大家看这些就都取出来了,就是两里边的所有元素,然后最后还一个叫它们这个差几。那差几什么意思呢?给大家解释一下啊,看这里描述,比如现在我们取K1和K2的差几,那取的是什么呢?就是K1里边的不包含在K2中这个元素,这个叫差几,K1里边有的,但是K2中没有的,这个称为叫差几,那大来取一下啊,我就取这个叫K2,还有这个K3取它们的差几啊,那我们来看一下啊。
08:14
就是s Di啊,写错了啊S,然后K2K3。大家看取的值是不是这个V5和V3,因为V5和V3只是它K2里边特有的,在K3里边它是不存在的啊,这个里边就我们提到的关于它的这么一个操作,所以这些呢,就是针对set集合中的常用命令,这命令比较少,大家把它会用就可以了。然后这个说完之后,我们set的底层数据结构应该比较简单了,它的结构就是一个字典,然后字典用的是哈希表实现的,通过哈希表能够快速找到内容,跟Java中类似,因为各位知道Java中的哈希set内部就是一个哈希map,只不过是所有的value指向同一个对象啊。ready中set结构也是一样的,它内部用的是哈希结构,所有value都指向同一个内部值,就是它里面通过这个哈希表进行我们的这个位置的这么一个查找。
09:17
所以这是关于中的集合set的数据类型的操作。
我来说两句