00:00
下一个我们来看一下,有一个新的东西叫历史的buffer,那历史的buffer呢,我在上一次课啊,没有说这个,所以说后面发现呢,历史buffer用的还是非常多的,所以说我们把这个加进去了,首先我们看看。List buffer它有什么用处呢?你看前面我们讲的这个代码呀,有一个麻烦的地方就是list呢,用起来有点麻烦,在什么地方呢?你看啊,你不管怎么加,你加完了过后这个list呢,你返回一个新的数据。这个呃,如果我们就想动,历史的本身还比较麻烦。所以说呢,在里面它提供了一个叫list buffer这么一个集合,它是属于sequence的。Sequence下面的那一个buffer那一大类,所以说这写了list buffer这应该是啊,写个大写的。List的buffer是可变的历史的集合,可以添加删除元素,那list的buffer属于序列,序列好,我们来看一下它的这个继承关系啊,继承关系呢也比较简单啊,同学们看一下它继承的一个关系啊,List的这个那就直接看我们这个图就行了,我们最早的这张图呢,现在就比较有价值了啊,我直接在这看。
01:24
我直接在这看就行了,我们找到最上面。这个图我们现在看的是可变集合,好同学们看这个图呢,一目了然,对吧,它是这样子的。你看这有一个list buffer,这可能看到有点有点花眼啊,呃,将就看一下,它是buffer的一个指,Buffer呢,是个sequence的sequence是啊,Itable这样过来一条线,所以说呢,如果我们要对历史进行这种可变的操作,比如说添加。比如说删除,诶就这样做,你看我们历史的,如果不能删除的话,以后你做起来很麻烦,呃在实际应用里面,你想对一个集合进行删除,历史来做不了很麻烦,所以说呢,我们就来讲一下这个历史B使用。
02:07
好,那list buffer呢,它是怎么做啊,来可以看到我们现在呢,呃,就直接来看案例就行了,也很easy,我就直接拿过来拿一个案例说话。好朋友们,我新建一个啊,新建一个,新建一个文件,这个呢,我们就叫list buffer啊list buffer demo01好同学们。写到这里来,然后呢,我建一个主函数把这代吗?引三好,首先我们可以看到LIST8分呢,需要我们引引包啊引一下包,这个包呢,就是scanner connection multipleable,历史buffer,这是可变的,可变呢我们看一下它的具体的应用。好,这个是创建。创建一个list buffer very easy,我这里指定了一个泛型,里面有123 123,大家看啊,如果你一旦指定了list int这个泛型呢,里面只能放int了,你不能放别的了,比如说你在这个时候,我说我还放一个字符串,那就肯定过不去,那你一定要就说你这个可变的buff法,你什么都想放,那你就下any,这个也是可以的,说我就指定是any类型啊,这个是可以的啊,这样就就能过啊,但是你如果这个泛型已然指定了int,那就对不起,那就没办法了啊,没办法啊,所以说我把这个改过去。
03:30
好,紧接着这句话呢,大家看我们来分析一下啊,这个地方就演示了访问啊,如何访问,访问呢?我用LIST02,这个地方访问的是它的第三个元素,这个地方应该输出三。好,输出三,即它返回的是LIST2等于三这么一个结果。好,下面这个是干什么呢?便利啊,这个我就不说了,便利,便利仍然是有序的,便利是有序的啊,是有序的,因为它是sequence这个大类的,这里我又创建了一个历史buffer是个空的。
04:09
这个是一个空的历史buffer。历史buff分,我这将了空的历史buff分里面什么都没有,然后这个地方看这个指令。这个指令是给我的可变集合两种添加方式。用加等加或者aend,那么这个甲等我们往里面追一下,其实这个加等底层呢,其实也是这样进行一个操作的,大家看一下啊,这这个加等呢,实际上也是类似于先判断是不是空啊,我怎么怎么样就创建一个,不是的话呢,对不对,我这边加了过后,把这个东西加到它后边这个啊,大体就是一种追加的形式,那么这个呢,除此之外还有个aend的方式也能做啊,End的方式呢,这边可接收一个可变参数,就说我可以一次性的添加多个元素啊,一次性添加多个元素,所以说我这呢只加了一个元素,你也可以这样写。
05:03
啊,你可以这样写的,可以一次加多个,好这个呢是添加元素,这里写的是啊,动态的增加元素,注意这个东加元素是直接对我们历史的一是有改变的啊,对这个历史的一是直接改变就是它。这个就会变化。它就会变化,以前我们这种追加,大家回忆下刚才历史的那个那个追加方式呢,其实历史的不会变化,这个是真的要变化了,好,我加了一个,好紧接着我们再来看这种加法,那这种加法呢,是什么呢?是呃,这两种加法是加了这种单个单个的元素啊,只是这个end可以一次性增加多个元素。对吧,哎,注注意说啊下就是呃,就是增加单个元素,增加一个一个的,一个一个的元素,那么还有一种加法就是加加等,这个是干什么呢?这个直接。
06:04
干什么呀,这个直接就是把一个集合加到另外一个集合中。你看历史的零加加等,那么这个实际上相当于说在历史的一零,在把历史的一拿到过后,把这个加进去,好我们来看一下啊,同学们,我们先分析一下前面这个目前这个历史一等于多少呢?我们一个个走历史的一,此时此刻它应该就等于一个四。到了这个地方,历史的一应该等于四五了,看清楚了啊,到了这个地方,同学们,那么历史的一没有变化。因为它是被加的啊,那历史的零发生变化,历史的零。哎,这个应该在原先的123,注意它是有序的啊。所以说你放心,肯定这个顺序不会乱,它会把历史的一加进加进去,是把里面的元素加进去。啊,他是这样子操作的啊,对对,我还我要看一下啊,我们确认一下,我们确认一下,我们把这个打一下啊同学们。
07:05
我们把这个打一下。历史的零。等于加list等零。啊,我们先把下面这段代码进行一个注销,我们重点看一下这个例子的零,到底它是把整个这个例子的一给它扔到后面了,还是把里面元素拉出来一个一个往里面扔了,啊,我们来注意观察一下。运行前面这个肯定没问题,重点就是看这个例子,诶这个是干什么的哦,这个是我刚才有个注销的动作,对不对?好的,那同学们我们再次运行看结果。看结果,主要看历史的原因是什么?好,我们打开这边,我们看到list的零,它其实是把里面的每个元素打散了放进去的,对吧,所以说仍然是这样操作的啊,这个就应该是四五。没问题,好,这个结论就有了,那接着我们再往下面看。
08:01
啊,还有这种加法。啊,还有这种加法就是LIST0加加list的一,那这个加法其实就是这个加这种操作的一个,呃,展开这个写法,所以说这呢,我们可以判断一下,这个应该就是list。List史的二,它应该是等于啊,就是在历史的零的基础上,到这一历史的零变差了。啊,再加。再加一个LIST1 list1是四五。好,那它就应该变成这个德行。啊,变这个样子的好,那么这种加法呢,我们来确认一下啊,确认一下看看历史的二。是不是等于这个,我们把这个流程看一下就行了,同学们看一下LIST2。好,我们主要看立二是等于多少,执行一下,它的加法比较多,比较灵活。好,我们这样一操作呢,我们看到LIST2,诶我们看到LIST2。
09:01
呃,跟我们想的是一样的。啊,完全是这样子的,我们再来看下一个加法。这种是list的零冒号加,诶这个跟我们刚才那种最加很相似了,诶非常相似,也就是说我们可变的list buff分呢,也只是原先那种不可变历史的历史的零加法,这个呢,注意听历史的零不会变化了,还保持原来不变啊,不变不变,那么现在这个历史的三呢,就变成了历史的零。历史的零是这样子的,对吧?哎,历史的零是这样子的啊,就是说历史上变成零这个基础上加了一个五。好,我们把历史三也打印出来看一下。好奇,这已经看到了啊。List的三啊,写到这list史的三等于加list的三,那这个结果呢,就是应该是12345再加一个五,好运行一下。好,这是加啊,非常的简单。
10:02
好,我们看到历史的三呢,跟我们想的应该是完全一样的,好我们再来看删除,那有些时候我们对这个。呃,集合加了过呢,我们有时候还要删除,删除也非常的简单,直接用remove,那么remove它的语法看一下啊,它这样写的。那么呢,有两种用法,第一种呢,就是指定下标,第二种下标后面写个抗值,那一般呢,我们就删一个,好这个地方我们删删一个,这个就是表示表示将下标。啊,下标。为一的这个元素删除。好,非常简单,那这个呢,这个list的一原先是啊呃,原先list的一是这个样子的,LIST1在这啊,14和五没有动工,没有动工,那删除一个呢,就只能变成一个五了,所以说这应该变离出来只有一个五,看一下对不对。
11:02
啊哎,不是一个,我看哦四怎么是四呢?哦对对对,我我删的是下边唯一的,下边唯一的是他。啊,对吧,下面唯一嘛,就是这是零,这是一,所以说这只便利出来一个四。好,答案就这样子的。好,那关于这个历史的bber的,呃,创建访问增加和删除,我们就全部讲完了,大家呢,呃,根据将来,根据这个需求,你自然也就知道用哪一个啊怎么怎么区分呢,一般来讲这种用的是最多的,我给大家讲哈,哪个用的最多。就是这个单加单个的元素,这两种用法用的最多,看你喜欢哪个,如果你比较喜欢传统的用法,就是用方法呢,你就用end。如果你喜欢像这种,呃,操作符重载呢,你就加等这个用的是最多的,第二个用的比较多的呢,就是删除,比如说我给大家出一个题,请大家编写一个学生管理系统。
12:09
最经典的嘛,学生管理系统,那学生管理系统呢,我要求完成对学生的添加、删除、查询和修改。那你想这个时候list它就比较好用了啊,我我需要加一个学生,我构建一个对象就加进去,注意啊,我这虽然写的是数字。它这里面也可以是对象,假设我将来历史buffer是一个存放学生对象的一个buffer一样可以用,这方加的就是对象了,这个openend也是一个对象。将来一个学生离开了我们这个学校,那么我就找到这个学生的下标啊,比如说用学币学号来表示下标,直接把它干掉就可以了,所以这个还是用的非常的多,那就是最用的最多的就是这个和删除用的比较多。什么情况下咱们可能用到这种加加加加呢,一般来讲就是呃,当我们批量增加的时候,比如说那边有一个集合,我要把这个里面集合的东西放到另外一个集合中,诶,我们就加加。
13:14
好,同学们,关于这个list buffer的用法,我们就给大家讲解到这里。好啊,这个地方我就没有啰嗦了啊,同学们,因为呃,这些同学们也也是有基础的,我就直接过下。好,这是我们第二一个题,对不对,好,这做了一个基本的介绍。啊,这是基本介绍。A、基本介绍。我给大家写一个标题三。标题三,那么嗯。我们又做了一个应用实例,哎,应用实例的代码。啊,应用实际代码也给大家放到这里来。啊,这个其实用的是比较多的。
14:02
啊,因为我们将来不可能说一个历史的不变嘛,对吧,那不变的话,你很少有一种情况,所以把这个代码呢,给大家板书到我们的笔记中去。OK,好,同学们打起精神啊,看屏幕。啊,看屏幕啊,刚才我讲的重点是这一块用的比较多。哎,用的比较多,呃,还有一块就是删除这块用的比较多,OK。好,这是我们的这个啊,刚才讲的这两部分截取一段视频。
我来说两句