00:00
好,同学们,我们接着来看,我们下面呢来看一下它集合里面的一个叫变长数组的内容,这边有案例,好,首先我们回想一下那个图。变长数组呢,它的这个名称叫buffer,后面呢,我们需要指定一个泛型。啊,这个时候如果是什么都不写,代表是个空的,因为它是变成的,所以说你的大小可以不指定,然后呢,不停的往里面追加就可以了,啊end的就是追加,那现在我们来看一下变量数组的几个应用,我再说一下啊,我们在学这个,注意听学习一个,学习这个集合的一个一个流程,它主要是应该是这样子的,第一个呢,你要学习它如何创建。第二个要学习他如何查询。就是如何及如何如何取到这个值,第三种呢,你要学习它的一个如何修改,第四个你要去学习它如何删除,其实就是这么几个四个点,一个是如何创建,如何。
01:06
检索或者要查询,还有一个叫修改,最后是删除,那你只要把这四个搞定就行了,你比如说像前面我们在学这个定场数组的时候,为什么我没有讲删除了,因为定场数组它是没有办法说你把那个元素删掉的,没有这个说法,你最多把那个直质空,但是你不能删掉,对吧?诶所以说通过这四个方式呢,你把这个四个问题都研究清楚了,那么这个这个集合基本上也就掌握了,只是在学习的过程中,你要知道,诶创建有几种形式,修改要注意哪些地方,删除又如何操作啊,这是学习集合的一个流程,那现在呢,我们来看变成数组,我们就按这个流程来进行讲解。好,现在呢,我们看数组的变,变成数组的一个学习,来往下走。变成书说。标题二,OK。好,变长数组呢,我们先做一个说明,对,肯定第一步要把这个说明给它说清楚,就是它是一个什么东西,好,我这总结一句话,看一下变长数组的声明啊,声明或者叫创建呢,用a buffer后面指定泛型必须指定。
02:13
那如果说你要放任何数据呢,就写any后面有个小括号,小括号在后面呢,其实可以带值,也可以不带值,不带就是空的,带上呢,默认也是可以的,就是事先有这么一个空间,那么然后再看这里追加,就用aend好,这个aend就会直接让我们二二进行进行改变。注意啊,这个open直接就让二二这个里面的就是二二本身这个就会发生变化了。那么这个就是重新复制,就是访问某个元素便利的方式跟前面一样,好,我先做做一个基本说明放到这。基本说明完了过后呢,我们就来说代码,代码演示了,就按这个步骤来学习,很快啊,学东西其实呢,没有我们想的那么难,但是最怕就是什么,咱们学东西不知道怎么去学,这就很恐怖了。
03:04
好,现在呢,我们来看一看代码演示,好代码演示这些代码比较简单的情况下,我就不浪费大家时间了,我就直接给大家拿过来用一下就行,好吧,因为这个没有什么太多的业务逻辑在里边,就直接告诉你这是这个什么东西完事了,那么现在我讲的是R什么呀,八分的一个单零一,诶OK。先把它建一个object。好,这样呢,速度会快一点,也比较高效一点啊。好,同学们看一下这个代码的基基本使用,我来给大家整理一下,第一步,首先我们要引一个包包,诶讲到这我就有一个问题要问大家了,什么问题呢?就是刚才我在讲的时候,凭什么我就没有去用,没有引这个呢?诶,大家应该感到很奇怪,但是有同学说了,说老师这个瑞是不是在预预先那个包里面就有了,的确,但是我在前面也讲过,瑞是个集合,是集合,它只理论上说你是集合,你只能在这两个包里面哪里过分,一种是scan。
04:11
是看到点这个还点不出来,得这张写一下啊,理论上说集合都应该在SC。点connection.mut或者是这个包里面去scanner。点connection.immutable里面去,你看这里面是吧,这这里这个这个可不不可变的,你看点R。这这这这你看还还找不到是吧,阿瑞哎,它是怎么用到的呢?好,我给大家说一下。我告诉大家原因啊,首先我们看瑞,为什么你没有就能用我们往里面追一下。好,同学们看我先CTRLB。进到这里面来。那接到这里面过后呢,我们发现这一个object,它在哪里呢?往下拉。
05:01
诶,你看它就在这个包包里面,所以它这个地方定了一个,所以说这个地方呢,我们其实是不用再需要额外的再一一个包就能用了,那么到了这个buffer就不一样了,因为buffer呢,它不在这个包,所以说我们要一这个时候在哪里呢?我给他写一次啊,我故意我这次故意不用那个自动导包的,为什么呢?因为我想给他看一下到底到底在哪个包。有些同学那个快捷键用的非常熟,后面有些同学连那个这个类在那个包里面最基本都不知道,我们就这次我们就移一次,后面就自动一包啊好告诉大家在哪里这个包的关系呢,还是要有效connection点,那么buffer呢,它是buffer这个类的,它一定是属于我们的可变的,那既然是可变一定是muable。Multiple点,诶你看这二八就来了,好,这个我们说一下啊,就以后你要找可变的就到这个对丢里面去找,那如果说同学看这个可变里面有哪些呢?还是按以前老师讲的规则,把光标定到这CTRLB,直接这边就可以看到我们可变的里面有这些东西。
06:13
很多啊,而且我们那个呃,体系里面其实只写了一部分而已,你看这么多。啊,这么多东西还有一些呢,他已经没有可能已经不推荐使用的呢,它会有一个这个一一个横线对吧,有个横线,那他不推荐,他一定会告诉你,你用哪个比较好一些,你看这都在这里面,如果不可变的呢,就在这个包包里面去看一堆啊同学们可以看他的原代码,明显可以看出来不可变的啊,不可变的这个整个体系是没有这个可变多的,你看可变明显要多一些内容,对吧,你看。我光这个拉的时间就比较大概要要要比他多一倍多一倍,好,这个我们说完了,我们再来往下面再看看东西啊好,我回到。我们这个位置来好简单说一下,这是干什么呢?这是创建,诶同学们这是创。
07:09
创建一个buffer非常简单,Buffer。那么这里面我写了个N例,就代表我这个buffer将来什么类型都可以放。我这个buff什么,那么初始化,我给他325非常简单,那这块地方这个地方呢,我们演示了一下访问访问指定啊通过就是通过下标,下标访问元素怎么访问的呢。2011就可以了,非常简单,这个我演示了一个便利。我演示了一个便利,也very easy,便利嘛,负循环下边我故意打了一下它长度,这个长度呢应该是等于三。没问题,三好,紧接着呢,我在这儿输出了一下哈希code。诶,我把这个哈希code输出来,我想给大家演示的是看看这个地址有没有变化,是不是真的把这个做了一个改变,哈希code我仅这又openend了,看这里面我讲了一个追加。
08:09
这里这里我们使用aend,使用aend aend追加数据,追加数据,而且大家可以看到这个追加的时候呢,我是同时追加了两个元素,那说明这个openend它是支持可变参数的,注意这个end呢,它支持可变参数。那支持可变参数,以前我们讲过可变参数呢,它是后面有个星号,我们来注意一下这个代码,好同学们看执行一下。我们可以看到果然如此啊,这个A呢是一个泛型,就说你将来是什么类型,这个A就什么类型,后面呢,我们有一个章节专门讲是看那里面的特殊符号,这里面我们会讲泛型,会会讲这个上下界,还有还有就是我们说的那个视图界定和上下文界定,那里面的内容呢,会更多,就是你会看到诶有些地方为什么有个加号,有个减号是怎么来的。
09:11
那那那个地方是会再给他讲的好,这个是追加,追加完了过后呢,我们看一下啊,下面代码先不看,我们来跑一下,同学们先把代码看到这就可以了。我打一个分隔线。好,我们可以看到这边便利过后呢,这个应该是等于,就这地方我们来注意一下,应该是等于R。011个一好它就应该等于几呢?好它就应该等于二,对的没问题,这个只要对输出这个就可以,这个就是便利了,按顺序它是有序的便利,这边这个哈西code呢,就是随机的,这个是三好,我们来玩一把。运行下。我们只看这个这个标签的前面部分,好,果然跟我们分析一样啊,二然后这个长度是三到253进行一个遍历。
10:02
二五三进一个边你看啊,你看这边,这边是输出一个输出一个二。这是呃,325才对啊,325我是说怎么会没有顺序呢,看的怪怪的啊,因为你这个buffer是有序的,怎么怎么跑出来235呢,所以说我刚才看错了,应该是325。325325对的,然后再打出一个长度三,大家看到这个哈西扣的也发生变化了,那说明什么呢?如果有面试官问你啊,说我们这个可变的buffer在啊end过后底层是怎么实现的?同学们在学Java的时候,老师应该讲过对数组的扩容老师应该讲过,那个小案例讲过吧。你们在学那个Java的时候,老师应该讲过一个数组,就数组本身是不能变化的,但是有一个题,当时应该做了一个题,就是原先数组只能放五个元素,但是我愣要在这个数字里面加上一个元素,怎么办的呢?实际上是把创建了一个新的数组,把原先数字内容拷贝过来,还记得吧,诶那个机子你看那个底层咱们就了解了,当你在底层溜了一个新的东西过后,这个地址也就发生了变化,可变我们从这里就体现出来了啊,这个时候大家看到啊,本身这就很矛盾了。
11:14
为什么说矛盾呢?你看我这写了VL,按理说你写了VR,这个是不是就不能改变?是不是不能改变啊,但是你们不要错误的,不要理解这个东,因为他这个呃的底层,它其实是创建一个新的对象,然后再把这个东西底层给你重新返回来一个新的地址。所以说这个地方呢,不能跟原先这个混淆起来,它底层做的这个工作了,底层在做这个这个事情好就是相当于你们以前讲的什么呢,那个Java的那个扩容,好,我这写上这句话啊,这个可以怎么理解呢,可以理解成。理解。哎,理解成Java的这个数组的扩容。
12:01
也就是说。也也就是说其实这个buffer呢,这个玩意儿,其实。他是对我们原先那个数组的一个。包装或者是一个扩展而已啊,扩展而已,只是它做的更加的完完整的一些而已,好,所以说大家可以理解成是Java数组的一个扩容,没毛病。好,紧接着我们看下面这个就很简单了,我修改了一下,这个我就不演示了,好,这个是我要演示的,嗯,这个删除,那么R01点删除,它是删除是根据什么呢?是通过是根据这个下标,哎,根据这个下标来删除的,你看我给他演示一下r.remove大家看这里。这个地方呢,直接写上这个这个这个in int代表的是下标啊,不是你要删哪个值是下标,下面甚至还可以带这种,就是指定从哪个地方删多少个,诶那么这就是如果是不可变的,是不会提供这个方法的,不会提供这个方大的好,我们呢,二话不说,我们就来试一下吧,这我这不写了,直接我删了个一,删了个零,删完这个零以后呢,其实等价于就是把这个家伙干掉了。
13:21
所以说这只有两个元素了啊,其实它底层呢,也是相当于这个扩容的一个理解,只是原先是增加,现在是减少了啊好,这个我就做便利,我看这个便利过后啊,删除后的这个元素便利,好我们看看便利应该是什么呢?那显然就应该是。这改了一下89。啊,那就说这个时候应该89和五了。对吧,80,诶不对不对啊,因为我这还加了有东西。呃,我们看看这个地方是等于多少呢啊,我们来推一下啊推一下。好,其实这个325没动过,没动过,这加了到这个地方,我们的数组已经变成这个样子了啊,我们走一下啊,应该是325,而且有时有序的啊,同学们有序的放心好了,90.0.13。
14:12
好,这个open喷的过后变成这个样子了,变成这个样子过后你修改了一下,当你修改完了,你修改是第几个呢?修改是第二个,于是这个地方变成了多少89能能理解哈,然后你这个整完了以后呢,你把这个数组还是针对数组,你remove掉了一个零,那么一旦匀步掉过后,其实就是把三拿掉了。啊,那这个时候最后你遍历出来就应该是八九八十九五九十点零和13好,如这个结果是一样的,就跟我们反映的是对的,最后这个程度呢,显然变成了四好,我们就看下面这个输出跟我们分析的对不对啊,走一个运行。当我运行过后呢,我们看这个结果跟我们分析的应该是没有没有不一样啊,89594.043,最后四完事,那这样子呢,我们就把这个可变数组的啊创建。
15:05
访问,你看我分成这个几几个章节在讲的啊,所以听老师讲课的一个思路,这个很重要,就跟你们学东西写代码啊,特别忌讳的就是什么都不管,上去先干。最后东西也没学成,也没学透,也没学明白,然后呢,就感觉脑袋一旦浆糊。最后拿到雷锋要用那个知识的时候,完全没有没有概念,这是最可怕的,所我们每一个就人和人最大的一个区别是什么呢?不是你身高体重,那以前我在大学里面有个老师,严维明老师说的一句话很经典,他说这个人和人之间最大的差别不是说你比他高多少,一米八,那还有个一一米五的,不是这个区别,也不是说这个人,呃,就是说他这个体重有多少,最重要是思想,就有些人,他是他有什么,他他学一个东西,他去处理一个问题的时候,他整个是有一个流程的,他心里面知道这步应该怎么做,下步应该怎么做,这个是很重要,所以他学东西很快。人和人的学习效率绝对不一样啊。同学们就说,老师,我很努力,努力是一个基本前提,每那是必要条件。
16:06
就是必要条件,不是充分条件,就说每个人只有努力才能成功,这是肯定的,但是呢,你也必须承认都是一个,都是同样学一个小时,人家就比你学的多,学的明白,学的透,就是思路体系要很要好好去研究一下,我们我是上我们这个以前上上高中的时候,我也我也上高中的时候,其中其实有一段时间我学东西也是不去不去不去想为什么学,就是完全就说人家告诉我这样学,我就学后面我想这个不行呢,为什么有些哥们儿他学东西那么快呢,难道我智商很低吗?对吧,很不服气,我就跟他聊,我说这个你学东西你怎么学呢?啊,怎么学?他说学东西你一定要有一个方法。一定要去想这个东西我怎么学才能学会,对吧,你不上去过,所以说你把这个思路第一步,第二步,第三步,第四步你都学完了,过后欧了,其实人生少一点套路,这句话是对的,但是我告诉大家,因为这句话肯定是对,因为人生全部是套路,知道吗?
17:06
人生都是套路,你该做什么事情肯定是按步骤来的。最后我告诉大家,人从我们学完学完计算机,你要去理解人的本质,人的本质是什么呀?人的本质其实就是按照他的这个这个这个这个机制来运行的,就跟我们加法经为MG一样,你该怎么运行,它是有流程的,结MG一个对象的创建是不是总是要创建的吧?啪啪啪啪,其实人也是这样子的。你只要适合了这个人的思维的方式,你学东西就特别快,而且还特别深刻,大家以今后有时间好好想想这个话题,不要天天都在学习,你哪怕拿拿上这个两个小时,哪个小时好好思考一下,说我应该怎么学。真正的问自己,我的效率是不是真的高,我是不是真的在想怎么高效的学习?而而且要真的去想这个事儿。有些同学是点一下哦,我想一下想不出就跑了,结果耗费了很多时间,效果不佳。你有一天能够理解韩老师说的这句话,你就应该深刻的理解学习应该怎么去学了啊,但是我不说我的方法很好,我只是提示大家,你们应该找到自己适合的学习方法。好,你看我这儿首先讲的是创建,我说完了,然后紧接着我讲的是什么呢?紧接着我讲的是访问,或者叫做查询。
18:24
查询讲完了过后,我马上给你们聊的是什么呢?聊的是这个话题,我到这呢,我就讲了是这个修改,是不是我这讲的修改的内容啊,你看这个是不是就很清晰了,修改,修改里面呢,有两种方式,一个是修改值。修改值第二种呢,我是动态的增加,动态增加也叫修改吗?啊修改完了过后呢,修改完了这我又讲了一个删除。这讲了一个删除,所以说这个东西呢,它就到位了啊,这就删除,好同学们学东西呢,要有一个套路啊,好同学们关于我们变成数组,我就讲到这里,一个基本使用我们就讲完了。
19:03
好,我把这个给大家进行一个简单的板书代码演示,说完了。把它粘贴复制过来。为为什么咱们一定要要去想明白呢?因为你将来东西太多了,你一定要找到哪去学好看到时间你就到这来找就OK了。好,这是基本使用,我截取一段视频。
我来说两句