00:00
大家好,我是海波老师,我们继续来讲Java中的集合,之前啊,咱们给大家介绍过了,我们的Java当中啊,我们根据数据的不同呢,我们会分为collection接口和我们的map接口,而我们的接口呢,主要面对的是单一数据的处理,而我们的map接口呢,主要面对的是我们KV子对的处理,然后呢,我们的接口下面呢,有几个比较常用的子接口,第一个叫list,那么第二个叫set,第三个叫Q,那么我们接下来就先讲第一个我们的list接口下面的一些具体的类啊好,我们这里把我们的类拷贝一下,我们写个零三。我们首先呢,就给大家讲一下我们的list,所以把这个呢,下划线啊,写上list,点击OK就可以了,点击完成以后,把我们这边去掉啊去掉,然后呢,我们写上它叫collection,然后呢,我们写上它我们叫做list就可以了啊好了,我们写完了之后,接下来我们往下来看,我们要给大家讲的第一个集合类呢,我们就叫a list。那么首先啊,咱们从名字入手啊,说一下我们为什么要讲解a list对吧?那咱们把这个名字拆分一下,我们的名字当中啊,你会发现它有个叫它有个叫list,其实啊,我看到这个list大家就能明白了,咱们的这个集合的类和之前咱们提到这个接口是不是就有很大的关系了,对不对?还记得list接口吗?它定义了集合中数据的存储和抄录的规则啊,在英文当中啊,这个单词呢,它表示列表的意思,所以呢,我们写上它。
01:22
List啊,它表示我们的列表还有一个清单的概念啊,这是英文单词当中的,所以呢,它存储的规则呢,它的数据就要求按照我们的一个顺序把它存储啊,列表清单嘛,对不对?那么记住啊,这里并不是说数据的大小顺序,它说的是我的插入顺序,怎么理解呢?很简单,就是你第一个把数据放到这个集合里面,你第一个取出来的就应该是它,这就是我们所谓的插入顺序,因为啊,它表示数据列表清单的意思,所以呢,它存储的数据是可以重复的。我们只关心我们的数据啊,它是不是我们按照插入的顺序存储,你是不是重复的不重要,那比方说我把两个张三我都存进去没问题,这是完全可以的啊,他不会考虑说啊,这两个张三不是一样的吗?我就存一份吧,他不会这么考虑,他只负责把数据存起来就够了,这个咱们之前给大家讲过啊,记住很重要,所以我们这里写上它。
02:19
我们是按照我们的数据啊,插入顺序进行存储好了,这个呢,我们之前呢,其实是已经说过的啊,那么好,我们的list咱们明白了,接下来呢,我们来说我们的另外一个叫,那么我们接下来。我们叫arra什么意思呢?其实很简单,在我们的英文单词当中,它就表示数组的意思,哎,还有一个叫阵列,哎,有一个这个概念啊,那么这个我们前面就讲过咱们的数组对不对,所以啊,我们把它合在一块,记住了,同学们把我们的列表清单,把这个数组阵列我们合在一块,就表明了我们的a list,哎,这里我们也给它加个颜色吧,来咱们加个颜色啊,来这个a list它就应该跟我们的数度有很大的关系,对不对?诶,那都有什么关系呢?其实给大家说一下啊,这个集合类的内部,它其实采用的就是数组来存储数据的,来咱们画图呢,给大家理解一下来。
03:11
打开以后呢,我们往下来啊,往下来,往下来以后,我们这里呢,给它画上,诶好,我们先给它画上一个小方块啊,这小方块里面我们也画上一个蓝色的吧,把这个蓝色呢给它画出来啊好了,画完了以后呢,这个蓝是什么意思呢?它就是一个我们的a list,所以我们这里写上它,我们叫A啊咱们的list,好把这个颜色呢,我稍微的变一变啊,变成我们的一个白色,嗯,可以了,诶没变啊。那么我们这里呢,我们编一下好嘞。变完了以后,接下来呢,我在这个a list里面干嘛呀,我添加一个小方框,这个小方框什么意思啊,就是数组的意思,就意味着在咱们这个集合的内部呀,它是有一个数组的,这个数组呢,我用一个红色来表示一下,那么既然是数组,咱们前面讲过了,里面就会开辟一个一个的小格子啊,而且是连续的小格子,那么这样的话,把这个小格子呢,我放进去啊,嗯,咱们画的小一点吧,咱们就放三个吧,好不好?
04:06
诶,放三个啊,放三个小格子就可以了,这个呢就是我们所谓的a list了,那么看到这个图以后,相信大家可以直观的感受出来,咱们现在要学的这个集合类or release,其实和咱们前面讲的什么U类啊,和student类呢没有本质上的区别,他们其实啊都是一个具体的类,所以呢,它们其实是可以构建对象的,对吧?你想我们的U类啊,可以表示当前对象是一个U的类型的对象,那么存储了用户的相关信息,而我们这里的a list就表示当前对象是一个底层使用了数组实现数据存储的容器对象,实际上这个类本身它并不能够存储数据,为什么?因为它真正存储数据的是里面的这个数组啊,诶老师,那既然它在里面是这个数组的话,为什么我们要学它呢?我们直接用数组不就完事了吗?哎,我们前面讲过咱们的宿主啊,它其实操作不确定的这个数据啊,不是很方便,对不对,所以啊,我们把外面包一层记住啊,这种感。
05:06
就就像我在我们的宿主外面我包了一层一样,那么包了一层有什么好处呢?诶,它里面就可以定义一些相关的属性和方法,来很方便的来操作咱们的宿主,你不用去操作了,我们的这个对象,我们的这个类来帮你操作一下,所以这样的话就会让我们的宿主的访问啊更加的方便,这种方便呢,大家现在是感受不到的,为什么呢?因为刚学嘛,我们有些东西没有讲到,所以我们一边学,我们一边慢慢体会啊。好了,大概解释了一下什么是我们的历史的集合,那么接下来咱们就准备去演示,演示咱们要创建第一个集合对象了,所以咱们打开我们的程序来,我们写上它。创建啊,咱们的第一个我们的集合对象,这个集合对象呢,就是我们的a list类型的,那好我就写上吧,咱们叫ara。List,然后呢,我们写个list,它等于new,记住啊,我们这是一个具体的类,它可以构建对象,我们叫A,我们的list好写上,写完了以后,因为啊,咱们这个集合呀,它都是在我们Java ul包里面的,所以呢,我们这里呢,按快捷键CTRL回车,然后呢会提示一下我们import一下,Import之后呢,把它包进来就可以了啊好了,包进来以后,我们的集合对象不就已经创建好了吗?对不对?哎,老师呀,我们这样的话就能创建集合对象了,那这么简单吗?诶我们说没错,就这么简单,当然了,还有其他的创建方式,这个呢,咱们可以看一看啊,我们这里呢,把鼠标放在这个小括号里面,按个快捷键叫CTRLP,这样的话它会提示我们,其实这个构造对象的方式有三种,第一个呢,是传递一个我的整形参数,一个是不传参数,还有一个是传一个集合参数,这个是什么意思呢?咱们分别的给大家去说一说,这个呢,大家知道就行了啊,我们来首先第一个,第一个就是我们现在写的这种啊,直接拗就可以了,不需要啊。
06:55
啊,传递我们的构造参数,诶,直接new就可以,哎,这就是我们的第一种,非常的简单对不对?好,我们说第二种,第二种是什么?第二种就是我们要传递一个参数了,所以我们说一下咱们的构造参数需要啊来需要传递一个我们的int类型的值,哎,老师这是什么意思呀,这就是我们前面给大家讲过的咱们的a list呀,它的底层是用数组实现,对不对,那么这个数组大家都知道它是有什么呢?有一个长度的概念啊,所以这个长度我们怎么设定呢?他不说了吗?给一个int类型的值,所以它是用于啊设定我们底层数组。
07:34
数组的长度,哎,你看这样的话不就连在一块了吗?咱们前面给大家讲了,哎,这个集合呢,底层是用数组,诶这里有一个我们的长度,这样的话不就连在一起了吗?老师,不对。你前面这个地方可没传呀,你不直接拗了吗?哎,这里呢,就得给大家解释一下,我前面为什么我直接拗就可以不需要传值,那是因为我们如果没船的情况下,它的底层的速度就是没有,所以它的底层速度为空数度。
08:03
什么意思啊,没东西。哎,老师,那不对呀,那为什么没东西呢?很简单,咱们回过头来大家看一看,我们这个图当中,我画了三个小格子,什么意思,就意味着我默认情况下这个集合对象当中的速度啊,它的长度为三,那我就问你了。我在整个集合的使用过程当中,我就没往里面放过数据,会出现什么情况,就好比我们当前的代码一样,我扭完了之后干嘛了?直接结束了。啊,咱们打印一下,我写上咱们叫做main方法,执行完毕,大家想想,如果我这么写完以后,我当前运行,我问你我当前这个集合对象我干什么了,我什么都没干,如果你什么都没干的情况下,你上来就给我分配了三个内存空间。没有意义吧,没有意义,所以啊,给大家解释一下,我们为什么直接new就可以,就是因为你不准备在创建对象的时候往里放东西,所以它的底层就是空数组,除非你开始往里面放东西了,诶,它开始创建了,所以这就不一样,所以啊,这个是不一样。记住同学们,这个没有说好与坏的问题,老师,那我们以后是不是用它好一些,用它不好呢?没有看场景。
09:10
我们用我们的int类型,就意味着我现在马上给我底层的宿主呢,给我构建出来,然后呢,马上往里放数据,对不对?而我这个是什么,就暂时先不放,我以后用的时候我再放,所以这其实是一个场景的问题,不要去纠结啊,好了,这是我的第二个,那么咱们再说第三个,第三个呢,我们的构造参数干嘛呢?需要传递一个集合类型的数据,或者叫做传递啊,咱们的一个叫collection,其实说白了就是一个集合类型的数据值,这什么意思呢?很简单,就是把别的集合放到我的集合当中,它是用于将其他集合中的数据放置在我们当前集合中,诶,它的主要含义就是这个意思啊。好了,这个给大家去解释一下,所以呢,我们这里呢,稍微的把这个图我改一改来,咱们拷贝,拷贝以后什么意思呢?放过来,放过来以后把这个去掉,把它去掉,把它去掉就是默认创建的a list,应该是这个样子的。
10:05
而我们如果传递了一个值的话,应该是什么,我们的这个样子的,对吧?哎,所以两种不同的方式啊,这里呢,咱们写上一下来,我们叫做什么呢?叫做new,叫AR,咱们叫list括号,哎就这意思,然后呢,如果呢,我们这么写完以后呢,我用一个颜色红色。好,把它复制一下,复制复制过来以后,这样写上一个什么呢?我们的三,你看两个不同的概念对吧?好了啊,这个呢,咱们说一下,那行写完了之后呢,接下来呢,我们就继续往下了,你现在呢,我们的集合对象已经构建出来了吧,那我想看看集合里面的东西行不行呢?当然可以了,所以我们接着写啊,咱们写上它,我们叫做突do,诶我们叫做打印集合对象,其实说白了就是想看看集合里面都有什么呀,所以呢,我们来我们打印一下,就直接打印了啊,咱把list直接往里面放,往里面放以后我们点击右键,我们执行一下看结果你创建了个集合对象里面都有啥呀?诶里面一片空白,什么意思?老师中国号什么意思?这个中国号啊,它就是一个范围。
11:08
这个范围里面就是你的数据,就是你集合当中的数据,可是你没有啊,所以啊里面为空就是这样的。现在集合里面没有内容,那肯定不行,对不对,所以啊,接下来我们就给大家演示一下我们这个集合对象的基本操作,那么这里的操作啊,就包含了我们增加数据啊,获取数据,还有便利数据,以及修改数据和删除数据,咱们一个一个演示啊,咱们首先呢,就先给大家演示一下咱们增加数据,所以呢,我们在前面给它写上它,我们todo,我们叫做增加数据,好,那么增加数据啊,同学们这里我就随便增加,我们这也没有什么要求,咱们就随便增加就可以了,所以呢,我们这里来写上它叫list,它有一个方法叫做点,咱们叫ADD,大家可以看到我们这里有四个方法,我们选择第二个,为什么呢?因为它就一个参数,而且比较好理解,它这边呢,就是增加数据的意思,所以呢,我们增加数据,我们就写上它,我们的这个爱的方法,它可以增加数据,只要将我们的数据作为参数传递到我们的爱的方法中即可。
12:11
好了,那我这里就随便写了啊,我们写上啊,我们叫做张三,诶就这么写好了,这就完事了呀,所以呢,我们运行一下,看结果运行运行以后大家可以看一下我们当前,诶中国号里面是不是就有张三了,为什么呢?我放了一条数据吗?哎,我放了一条数据以后,那这时候我们的中国号就有了,看着还是比较简单对不对,但是我们说一下,这是要看场景的,我们把增加数据的原理呢,给大家演示一下,咱们来操作一下。我们现在回过头来,同学们,我们现在是不是往里面添加数据了,本身啊,它里面现在是这个样子,但是你往里面添加数据的时候,它其实就已经变成了这个样子,为什么他要把这个数组呢?开辟什么几个内存空间,所以呢,它会分配几个小格子,只不过呢,这个小格子呀,默认不是三个,默认是十个,这里咱们也说一下,来咱们说一下。
13:06
咱们添加我们的数据时啊,添加数据时,如果集合中没有任何的数据,那么底层会创建我们的长度为十的数组,这里我画图就不用画那么多了,同学们,我就把这个呢拿过来复制就行了,复制以后我就放过来,这就意味着从现在从这一步,现在就变成了我们下面这个图形了,所以把这个箭头呢,我们拿过来,诶,放过来。好了,放过来以后,同学们这个时候我们放数据之前就已经完成了我的小格子的开辟,那老师那把这个小格子开辟出来以后怎么办呀,很简单呀,把咱们的数据往里面放不就行了吗?对不对,所以啊,我在这边准备一个数据,我就假设呢是个张三,所以呢,我们这里来。我们给它拉长吧,好吧,拉长拉长以后,诶拉就点长是吧,放小点,然后呢,我写上它,我们就叫张三好吧,写完了以后,我这里呢,给它一个颜色,绊示一下这个颜色吧。
14:03
然后呢,我把数据放进去,记住啊,这个放并不是这么放的意思。哎,老师这么放不挺好吗?记住这么放感觉没问题,但是呀,我们的数主纯的它并不是对象本身,纯的是对象的引用,所以呢,也就意味着我们的箭头呢,应该是引用了我们的这个对象,所以啊,它是这么个概念,好,然后呢,记住啊,同学们,我们宿主呢,是有索引的吧,所以呢,我这里加上一个什么一个索引,给他一个零。好了,我这里给他一个零啊,这个颜色呢,给他换一个吧,换成一个我们这个,诶诶嗯,也行吧,我觉得是不是也可以啊,换一个醒目点的吧,哎,就这样的,所以啊,我们当前的数组零,哎就指向了张三,这不就这意思吗?所以啊,这个我相信大家是好理解的,为什么呢?只要数主咱们之前能明白,这个应该问题不大,但是呢,我们增加数据还有个问题,我们再来一个呢,我增加一个理四呢,同学们。我增加一个理式的话,大家想想这是不是就增加第二条数据了,我们需要注意我们第二条数据啊,我们当前数组呢,是有足够的空间来容纳第二条数据的,所以我们复制一下来复制,复制以后那么往下走,往下往下以后大家会发现我现在呢,来复制把我的理事我添加上。
15:13
好李四,然后呢,我们的这边有它呀,所以我拷贝,拷贝以后我把这个,所以呢,我变成一那么好这个时候把它放过来,哎,老师这个跟前面不是一样的吗?记住有区别,区别在于我第一回放怎么了。它是不是会开辟一块我们的长度为十的宿主空间啊,但是我的第二条会吗?不会,第二条是不会的,所以第二条比较简单,好,我们来看我们的第三条,我张三李四再来个王五好了,来个王五之后,大家看这个图,你会发现我是不是又得创建一个对象了,哎,想他我们叫做王五,好,你写上王五之后,那么这时候怎么了?诶,我们写上一个二,你会发现也没问题,当我们的数据容量够的情况下,我们直接把箭头引用这个对象没有任何问题,对不对?好,问题点就在下面这个了,我再来一条怎么办?
16:03
我这里写上一个什么,我们的赵六。同学们,我写赵六,你们觉得有没有问题了?有问题了吧,为什么?有什么问题,咱们之前说过了,数组它的长度是固定的,但是如果你增加了比它长度还要多的数据的话,它肯定会出问题吧,诶,但是同学们,我们运行一下看结果,运行以后看结果会怎么办,你会发现没有任何的问题,我们的中国号里面就是我的数据,而且我的数据呢,就是按照我往里面放的顺序,第一个放张三,第二个放李四,第三个放王五,第四个放赵六,中间用逗号隔开,这就是我集合中的数据说明啊,同学们,它能放啊。诶老师你不说吗?他们前面有十个吗?好,我们改一改,把它改成三个,你把它改成三个的话,这个容量就是三个,它的数值的长度就是三个,好了,那现在呢,我再运行运行运行以后看结果,大家看一下它报错了吗?它还是没有报错,诶老师,那这是为什么呢?这就是我们前面讲的,为什么我们要学我们的这个集合了。
17:08
数组就能容纳数据,我何必再去集合呢?就是因为这样的东西你看不见了,什么东西它底层的操作本身应该会发生错误的,但是你这没错误,老师呀,那他是怎么做到的呢?诶这里给大家解释一下,其实啊,咱们也不用看得太细,咱们这里呢,就把基本的原理告诉大家就行了,很简单,它创建了一个更大的速度,就这么简单,诶老师我不明白,所以啊,同学们,咱们往下走,往下走,记住当我放我们的第四条数据的时候,来,咱们往这走啊,往这走,往这走以后我的箭头呢,诶就走到这边,记住我们下一步要放第四条的数据的时候,我们应该是这个样子的,来把这个呢,我们复制咱们它咱们叫做赵六,记住啊,我现在放的是我们的第什么第四条我们写上叫赵六。但是呢,我说过了,这个照六啊,肯定放不过去嘛,因为空间不够,对不对,怎么办?所以大家看一下来复制复诶不用复制了,我们把这个呢,我们拉长一些,拉长以后什么意思,我要放置一个什么更大的一个我们的数组了,所以呢,我把这个呢,我们复制一下,诶复制好了,复制以后呢,我们放到这儿,诶放过来,放过来以后干嘛呢?把这个呢,诶拉长一些,我这个可以再长一些,咱们再长一些,把这个呢,我们再长一些,行可以可以了,之后呢,我放过来,把这个呢,我们放到这儿,好放过来以后放到这边我觉得可以了,来可以了,行,我放两可以了。
18:34
行了,回过头来同学们看一下,这个时候就会有两个数组了,这是我们的旧的,这是我的新的,那好,诶老师,那旧的和新的有什么区别,区别就在于我们这个长度是三,但是这个是五八,这个是五了以后怎么办?它会把我这个零的这个箭头呢,干嘛呢复制到这儿来,所以也就意味着我的这个箭头干嘛呀指向它,同样道理,我再把这个一的这个箭头呢,再指复制过来,然后再去指向它。
19:00
然后呢,把我们二的这个箭头呢,也复制过来,然后呢,给它放过来,同学们它的底层原理就是这样的,那么好了,我们放到第四个呢,第四个的话它就在这儿了,所以啊,我们想到它,我们叫做三,因为第四个它的索引是三嘛,所以我们的箭头,诶,我们就拿过来,箭头我们就写上一个它就可以了,同学们有没有发现我们当前的这个就没问题了,所以它是不会发生错误的,为什么?因为它底层它自动的帮你完成了一个创建新的数组的操作,所以我们把箭头拿过来。拿过来以后,它把一个旧的变成了一个新的,所以啊,我们这里也写上它来,咱们说一下这个呢,我们叫O的对吧,O的一个数,旧的数组嘛,然后呢,这里呢,我们写成一个新的数组,哎,新的数组这个操作呀,我们给它称之为叫扩容。咱们称之为叫什么呢?叫扩容,什么叫扩容啊,你很简单嘛,扩大容量嘛,原来你旧的数组的容量是三个,能容纳三个数据,但是呢,我们的新的数组呢,我们有了五个,那么就能容纳五条数据,对不对,诶这不就扩容吗?哎,老师,那不对呀,你有两个了的话,那你这个怎么去用呢?给大家讲一下,当我扩容之后,我们其实啊,旧的就已经不再使用了,说的简单点,我们其实怎么已经可以把它去掉了,所以把我们的这个呢,诶给它来标上灰色。
20:21
咱们给它标上灰色,你标上灰色以后,就意味着它已经不起作用了,这个呢,我为了让大家看着什么呢,有点变化吧,所以呢,把这个颜色呢,稍微区分一下,把这个呢,我们也给它区分一下这个颜色。我们这里的颜色呢,给它来啊,咱们变化一下就可以了,同样道理,同学们这个箭头我们也给它标虚,所谓的标虚就说明啊,现在已经不再使用了,我们真正的箭头指向的应该是这个位置,同学们能不能明白,所以我们放第四条数据呢,其实呀,我们要考虑的东西就非常多了,懂我的意思吗?同学们就是这样啊,好了,这个呢,我们就给大家稍微的说一下啊,行了,那咱们往里面放数据,咱们已经知道了,对不对,只不过过程呢,它要看场景了,你这一步放,这一步放,这一步放,这不放,你要看看它的容量到底够不够了,嗯,好了,同学们这个下来呢,自己需要去用一用,写一写,理解一下,可能看不出来,但是需要理解一下啊。
21:16
好了,接下来我们再往下看,咱们来访问集合中的数据,那么首先先访问集合中啊数据的一个长度,所以呢,我们来说一下,咱们突突,我们叫访问啊集合中的数据,那么首先我们的第一个来写上它第一个我们获取集合中数据的条数,好了,这个非常简单啊,同学们,咱们来咱们打印,打印以后list点它有一个方法叫做size,哎,就这意思,你看1234对不对,我们点击右键,我们执行,执行以后它的数据的结果应该是多少,应该是四,对不对,还是非常简单的啊,那好老师,那既然它的数据呢,有四个的话,我想获取到它的某一个行不行呢?当然可以了,所以呢,咱们接着写获取指定位置的数据,什么叫指定位置呀,你的底层不是数组吗?好,我指定的某一个位置,比方说第二个,哎,这就是位置吗?那我该怎么做呢?哎,我们可以这样,我们可以采用索引的方式。
22:14
很简单吧,你底层就这个宿主啊,那我采用所引就顺理成章了呀,所以呢,我们来我们叫做list点我们有个方法叫get,这个get呢就是获取我们指定位置的数据,只不过这个位置呢是索引的意思,所以呢,我给他一个什么呢?我们的一,然后呢,点一下,记住同学们不要误会啊,咱们这里的一不是获取第一个,而是索引一,那么其实应该是第二个吧,所以他应该把李四获取到对不对,所以我们点击。运行之后大家看一下结果,你会发现我们的理事是不是出来了,就是这样的啊,所以我相信啊,这个应该难度不大啊,是这样的,这样的话你一个一个获取太麻烦了,那集合的数据很多,比方说有100个1000个,那你一个一个获取多麻烦呢,而且你还要把每个索引都记住,很不方便,那怎么办?我们可以通过底层的索引来访问数据,所以我们这里可以使用for循环的方式来便利集合中的每一条数据,所以咱们接下来写上一下我们叫做便利集合中的数据。
23:13
什么叫便利啊,就是挨个找啊,那怎么挨个找啊,咱们这里用for循环,我这里呢写上for循环,我为什么用for循环呢?是因为for循环当中啊,就有一个int I等于零,我就拿这个I当缩引,然后呢,干嘛呢?我的I小于小于什么呀,就小于我们集合的长度,诶老师,我不明白这是什么意思,我们循环什么意思啊,就是挨个找嘛,挨个一个一个找的意思对不对,一个一个去找,但我找的时候大家想想,我不可能这个只写的无限大吧,我应该怎么办?我应该找到它的最后吧,那么我们回过头来看一看,我们要循环我们的宿主集合的话,那么我们从第一个开始循环的话,那么到了最后一个,大家看看01234吧,也就意味着我们这个索引是不是应该是四呀,我循环到这儿,是不是就意味着我现在已经不应该干嘛呀,不应该再去往下去循环了吧,所以呢,到了我们这个位置的话,就应该停了,巧了,你的这个势不就恰恰是我们比。
24:14
所以呢,长度要小一吗?所以啊,只要比我的长度小的话,应该就没事了,如果你等于我当前的长度的话,说明不对了,所以我们就不再循环了,所以啊,我们就把这个条件加上,加上了以后不要忘记后面加上一个叫爱加加对吧,把我们当前的索引呢,不断更新一下好了,我们这里呢,把它呢,我们来啊,咱们给它操作一下,我们写上叫list,点我们就get我们的I,这样的话呢,我就可以把每一条数据我挨个的取出来了,所以我运行一下看结果你会发现我们里面的数据呢,哎,我们的张三李四王五赵六呀,看着有点乱是吧,那看着有点乱的话,我加点东西。我写上它啊,咱们写上它,我们叫集合中的数据,OK,然后呢,我现在给他操作一下就可以了啊好了,同学们,你会发现这个是张三李四王五周六,没问题吧,不要忘记同学们,我们第一个往里面放的数据,是不是我们第一个给他取出来了,哎,老师啊,那你不说了吗?咱们的历史的接口还可以放重复数据呢,咱们试一试啊,你把我们的这个李四我改成张三。
25:18
这样的话呢,我的数据当中就会有两个张三了,哎,那是不是重复了呢?那重复的话会不会只保存一个呢?我们来运行,你会发现我们即使它有两个的话,它的总数还是我的四个,而且它的前两个值都是张三,没有任何问题,说明它不用考虑数据是否重复的问题,这个是不用考虑的。行了,同学们,那么我们的这个什么访问数据应该问题不大了吧,第一个可以通过索引的方式去定位某一条数据,也可以通过我们的什么循环便利的方式,把咱们的数据呢,给我获取到也是可以的,但是有的同学说,老师呀,我现在不想什么呢,就是看那个索引,为什么呢,我就想把我的数据呢,挨个给它取出来,你加这个索引呢,我感觉有点麻烦。
26:00
诶,那有没有什么简单的方式呢?告诉大家也有,当我们不关心数据所在位置的时候,我们可以换另外一种方式来循环便利,所以咱们这里说一下来写上突do啊,如果我们循环便利,我们集合数据时不关心我们数据的位置,那么可以采用特殊的循环。诶什么意思啊,我再写个循环,但这个循环跟刚才有点不太一样,所以把这个注掉,注掉以后我写上它叫for循环,然后呢,我们在这里写上一个叫object,然后呢写上它写个冒号,然后再写上一个集合就可以了。老师,这什么意思?很简单,他就是告诉你,我要把集合当中的每一条数据拿出来。去遍历就这么简单,所以呢,我这里就写上它A拿过来,拿过来以后我直接写上它就行了,所以啊,我把这句话也加上它来拷贝拷贝,同学们,我们就来运行一下,看结果运行你会发现跟刚才是完全相同的,哎,张三张三王五赵六没有任何区别,而且集合中的数据也都是对的。
27:14
哎,老师,那这个哎呀怎么理解呢?我说过了,很简单,它的语法呢是固定的,所以呢,我们这里写上咱们的for循环,然后啊,我们写上括号,然后循环对象,然后冒号,我们叫做集合,就这么简单啊,你只要这么写就可以了,为什么可以这么写,因为我不关心我们集合的位置嘛,所以我根本就不要索引,不要索引的话,只要集合和你集合中的每个数据就够了,对不对,诶就这么写就可以了啊好了,这个呢,咱们就说到这里,咱们现在呢,已经把我们数据的增加和获取呢,咱们演示了一下,那接下来呢,我们就来演示一下我们的修改数据啊,所以呢,咱们接下来写上它,咱们叫图do,咱们叫做修改数据。修改数据还是比较简单的,为什么这么说呢?是因为啊,我们只要找到它的位置,把它一改了不就完事了吗?所以我们的list点,我们有个方法叫site,这个方法很简单,就是把它的某个位置的值给它改了就可以啊,所以咱们说一下。
28:15
将指定位置的数据啊进行我们的修改,所以呢我就写成一,然后呢把它改成叫李四,诶为什么呀,我们刚才不就改成了我们的张三了吗?所以我再改回来啊,改成李四好,然后呢,给他来一个,但是同学们需要注意一下,我们的这个方法,咱们的S的方法,它需要传递两个参数,那么第一个参数它表示数据的位置。那么第二个参数。它表示我们修改的值,但是还有一个地方需要注意,我们的方法会返回结果,这个结果就是我更新前的值。说的简单点,你把什么更新成当前的李四了?所以啊,我们来给他找一下叫做点,它有一个叫VAR,回车这边有一个叫old。
29:09
叫old value。叫旧的值,所以啊,咱们这里呢,把它打印一下来。打印一下,把这个叫old value,咱们写上,它叫修改前。咱们叫修改前的值,好了,咱们运行一下,看结果运行,运行以后大家观察一下,你会发现没问题吧,修改前的值是不是张三,但是我改完之后张三变成了李四,没问题吧,哎,这个是对的,所以修改的操作其实也并不难,诶那有修改了,那有没有删除呢?所以咱们来找一下,咱们叫嘟嘟。咱们叫删除数据,其实也非常简单,什么叫删除啊,你把我们那个数据你找到了,一删不就完事了吗?所以呢,我们的list。表一下,我们叫remove,这个你会发现也有很多的方法,那么这里我们用第一个,第一个方法是什么意思呢?就是说我们把指定的位置的数据给它删掉,它会返回一个对象,就是你删除的那条数据是什么,所以我写上它。我们写个一。
30:10
啥意思,我把李四给它删掉啊,你刚才不是把那个值变成李四了吗?现在我不要它了,那么你不要它的话,好,这个值你就拿到了,所以我们说一下这个叫remove value6你把你删除的那个值拿到了,所以我们打印,打印之后呢,我们就写上它,诶我们叫删除的值。好呗。拷贝以后把这个拿过来,咱们叫做它,把这个写上咱们叫删除的值。好了,同学们,这个咱们运行一下应该没有问题啊。好了,删除的值是不是李四了,你删除完成以后,张三王五赵六这个就是我们的基本操作了,我把这个文字呀给他补全了,咱们拷贝,拷贝以后呢,我们放到这里,首先将指定位置数据呢进行我们的删除好,然后呢我们的方法。
31:01
它需要传递一个参数,那么这个参数啊,参数它表示数据的位置,好把它去掉,去掉以后方法会返回结果,这个结果就是我们删除的值,你看看这不就行了吗?方法并不难吧?哎,增删改查咱不都有了吗?行了,同学们,这个集合对象咱们先讲到这里。
我来说两句