00:00
下一个呢,叫做set接口,哎,咱们呢,之前把这个set呢也讲完了,首先存储数据的特点,无需的不可重复的啊,这个叫元素或者叫对象数据啊都可以,那么具体的具体的呢,我们讲到两个事儿,第一个呢叫无序性,不可重复性,哎大家呢,关于晒这块呢,主要呢,关心的就是你怎么去理解这个无序和不可重复。啊,这呢,因为咱们讲map呢,也会涉及到所谓的叫无序和不可重复,哎,跟它呢其实是一致的啊。嗯,首先我们关心的就是这个叫无序性和不可重复性,注意这时候呢,咱们是以哈希赛为例。啊,毕竟呢,这个吹set这个底层的数据结构呢,跟哈希set不一样啊,咱们呢,主要关心的还是这个哈希set啊,以它为例,无序性,不可重复性,哎,我们指的是这个意思,因为在我们这个吹set当中,其实没有关心他。
01:06
所以咱这呢,主要说的还是哈西。嗯,好,那么上一个的话呢,所谓的无序性呢,是因为这个跟哈希值有关,这个哈希值呢,就决定了我们在底层数组当中的存在位置,哎,不是说上来第一个元素就是角标零啊,这个呢是哈基值来决定,可能一放来一上来就上来就放成角标三了,哎,第二个呢,就成了角标一了,从这个角度来讲,它是无序的,这个事儿呢,大家需要清楚啊,对咱们讲map呢,也是有意义的,那么接下来呢,我们关心了一下,就是这个哈希set它的一个添加过程,诶,它的一个添加过程,通过这个添加过程呢,你再看这两个事儿,那就更清楚不过了,这个添加过程大家呢,其实不要求说呃,特别透彻的去能够表达出来。啊,因为面试呢也不会去问,我们开发中用set呢也比较少,这个要求不高,但是呢,我们讲哈希map呢要求就高了,而哈希map呢跟他呢又比较相似啊,那你只需要关注一个就行啊,CTRLC这个呢,我就CTRLV拿过来啊在这里边呢,我写了一个说哈西赛的一个底层,这个实现是咱们从上面看到的啊说这我提到了一个叫底层数组啊又又提到了一个说你这个呃以列表的方式呢,去去存啊,说我这写了一个数组节列表,当然这个呢,其实我得有个前提,前提呢就是咱们这是JDK7哈。
02:35
哎,这这八的话呢,这个就变了啊,变的话呢,这个就不在这说了,诶因为咱们也知道底层是哈希map了,那咱们讲哈希map的时候呢,具体展开啊。好,这个过程大家清楚,再接下来,接下来的话呢,关于这个set里边啊,我们提到它的一些常用方法这块呢,我们明确出来说他呢,没有这个额外的这个方法了,嗯,他们写掉在上面就写的说set当中啊,它没有额外的提供这个新的方法啊,使用的都是collection当中定义的这个方法啊,CTRLC哎就这样啊,那么具体的这个时间类啊,这呢,我们提到了这样的一些结构。
03:21
CC。哎,CTRLS这是咱们能考试的时候也考虑到题了啊,这里边提到的这样几个实线类啊,几个实验类,这个实验类呢,叫link的哈希set说呢,它可以按照添加的,呃,添加这个元素的这个按照按也没有这个看来以后呢还不能用它了啊。这个大家要现在这写没问题,保存就能保存下来,就粘的时候不行。可以按照呢,添加的这个顺序呢去遍历,那如果问一句为什么。
04:05
为什么呢?它底层是不是多了一对那个链表啊,哎,多了一对链表啊,这一对链表呢,帮我们去记录你添加的一个先后顺序,咱们在PPT里边呢,带大家看一下这个图。诶,看一下这个图没有带大家看源码,因为没有必要这个你要一看又看到这个map里了,所以咱们看map的时候呢,带大家去说啊,诶我只是告诉你说底层呢,他是这样做的,哎,下边呢,这我应该是写这个事儿了啊哎,维护了两个引用,其实呢,就两个这个指针啊,记录一下它这个先后顺序了,哎这个呢,你也可以把这个。诶写一下啊,CTRLC这个我们加到这吧。CTRLV一下。
05:01
嗯,这样往前一下吧,这样。这有点太长了。行,那就是因为呢,它加了两个利引用,或者叫两个这个指针啊,记录了前一个后一个,所以呢,它才能够按照这个添加的顺序去变历啊,也正因为这两点,所以我们便利的时候呢,它的效率才比较高一些,哎,是这个原因,好,这呢就过了啊嗯,关于存储对象所在类的要求,这个我们就分开来写了,说哈希side和另一的哈希side来讲,它的判别标准呢,诶都是用的这个e cos和哈code,所以我们呢,这里边写到了说像这里边添加的,添加的时候呢,要重写这两个方法,呃,这呢向它添加数据,这个严格上来讲,咱们这个set呢,主要还是指的。
06:00
哎,主要呢指哎还是呢,我们叫哎哈西set,哎还有呢,这个叫哎link,哎哈西side,哎其实另哈希side你可以不用说了,因为它是它的一个子类啊,以它为代表就行了,哎,那那个吹塞呢,其实不一样了,哎咱们复习也说这个事儿了啊到这CTRLC。啊,CTRL位一下。行,这呢,我们就说的这样的这个问题啊,大家关注一下,嗯,然后另外呢,我们提到这个叫tra set,这个吹set的话呢,它这个事儿就比较多了啊呃,他跟我们上面这个说的呢,都不太一样,对于这个吹塞的来讲,它的这个判别标准说是不是相同不相同,这个呢就完全变了。咱们呢,是按照这个去比的啊。CTRLC。哎,看着微一下。啊,这个我们写成个小一,这个小二啊,它呢都是以我们这个两个重写的方法为啊为这个判位标准不再是这个ES,它E呢,它也没有掉了,嗯嗯,那么具体的关于这个吹塞的它的一个使用,那这块我们提到了几个点啊呃,首先关于它的使用说呢,像吹塞当中添加的元素都得是相同类的对象。
07:22
这是第一个,第二的话呢,你往里边添加它呢,涉及到叫排序了,所以我们一定要指明这个元素的一种排序的规则啊,那么我们就可以选择是自然排序还是定制排序啊,这呢我们就提到了这样的两个事情。哎,这样的这个两个事情啊,自然排序和定时排序,那么具体的这种实现方式排序,咱们呢,就列了两个例子,第一个呢,这是一个自然的,嗯,CTRLC啊这呢,下边这个呢,是一个定制的,嗯,到这啊CTRLC。哎,上面这块我们标识一下啊,这个呢是自然排序。
08:07
嗯,就是这个,呃,关于这个compar和comparable呢,其实不是说只在我们吹赛的当中用了,只是说呢,你这个吹赛的要求这个对象呢得有序,所以呢,咱们前面讲说对象要有序,就得涉及到两个接口啊,其实这两个知识点呢,是独立出来的啊,只是说呢,我们在这个吹塞的这块呢,用了一下这两个知识点而已啊。方式二啊,这个叫定制。哎,排序行这两种排序方式呢,大家这个诶关注一下就行,那具体呢,你需要怎么去排这个你就具体用哪个就行,区别呢,呃,这个主要点呢,就是说你看你调哪个构造器了啊,没有参数,相当于你得自然排序,有这个参数指明一个这个comp啊,那么就按照你指定的这种方式呢,去排这样这个点啊成那我们呢,之前呢就讲到这儿了,这个里边呢,点其实也比较多,比较细啊这个大家呢下来呢再复习看一看。
我来说两句