00:00
大家好,我是海波老师,我们继续来讲Java中的a list集合,那么这里呢,我们来拷贝一下啊,把它改成我们的零四,然后呢,写上一个下划线我们的a list好了,点击OK,点击OK以后把里面的东西咱们全去掉啊,咱不要了,那么然后呢,我们在下面的我们添加一个啊,咱们写上A啊list的常用方法好了,那么和之前一样啊,我们首先先创建一个我们的对象,叫a list,它等于new ay啊例四的对象,好,然后呢,我们往里面添加数据,跟之前一样,咱们添加数据来添加,添加以后呢,我写上一个张三,然后再来一个,我们写上它我们的一个李四,然后再来添加,我们写上一个网五行了三条数据让我打印一下,打印以后大家看一下我的集合,现在呢,我们直接点击右键,我们运行一下,那么我们的集合呢,大家可以看到张三李四王五没问题,他用中括号把我的数据呢,给我括起来,中间用逗号隔开,这个就是我们。
01:00
Release集合默认的那个to使方法所打印出来的字符串信息,这个比较简单,接下来我们就来演示一些其他的方法来,我们的list我们点我们还是I,但是同学们看一下,我这里的I跟之前不一样了,我需要两个参数了,所以呢,我们写上它,咱们的I的方法,它是可以传递我们的两个参数的,第一个参数它表示我们数据增加的位置,这里的位置呢,其实说的是索引,然后呢,我们的第二个参数啊,第二个参数它来表示数据,对吧?它等同于啊,把我的数据给它插入到底层数组的什么位置?好,我写个一,然后呢,我们写上它,我们叫做照六行了,写完了以后,那么结果是什么样子呢?我们先不给大家去执行结果,我们先把图形给大家稍微的演示一下来,我们这里呢,我们拷贝一下,我们把当前的这个集合呢,我们给它复制一下啊复制复制以后呢,我们往下放。
02:00
往下放以后同学们看一下啊,我们现在呢,把我们旧的这个我们去掉,这个咱们之前说过了,咱就不要了,把这个呢去掉,然后呢,把这个往回来往回来好把咱们的A呢我们放过来,这个咱们都不要了,这个new咱们也不要了,行,现在呢,我们这些箭头呢,我们全都给它去掉,保证是个全新的就可以了,我这个位置就诶位置也移动一下吧,本来不想太不想移的啊,咱们这里呢,把这个箭头呢,稍微的移动一下来,咱们放这边好,把这个箭头呢,我们也给它移过来啊,这个箭头咱们移过来可以了,行。同学们,那现在呢,同学们看一下,我刚才是不是往这个集合里面,我放了我们的三条数据啊,大家看一下我们张三李四王五没问题吧,等同于一个一个给它加上,但是注意了啊,我们这里要给大家添加的这个数据叫照六,但是这个照六啊,它添加的位置来我放到这边来,我放到这个地方呢,我们的这个照六啊,哎,咱们的这个照六好了,我现在呢,要把它添加到我们的集合当中去,所以啊,我要把它放进去,但放进去的话,同学们它的位置我们要求它固定为一的位置,但这个一我说了是所引,那就意味着我要把照六我要放到这。
03:10
不对,老师,你的这个地方有一个李四呀,那你怎么把照六你放到这儿呢?而且你不能说把它覆盖掉,对不对,因为我们这个爱呢,它不是修改的意思,它是增加的意思,就意味着我的李四不能丢了,对吧?你不能说我把赵六呢,把这李四覆盖掉,这不行,你得增加,那么你增加的话,可是我的李四呢,它又在这个位置怎么办?所以这里就需要说明一下,我们既然是数主的话,它要求数据是连续的,所以你数据不能丢,又要求是连续的,而且还要保证它的顺序,那么怎么办?它就需要移动了,什么叫移动呢?就意味着我们的网五呢会往后移,我们的李式会往后,我们的这个箭头三对吧,我们放过来,然后呢,我们的这个它也会往这边放,这个时候你把我们的照六插进去,记住这个我们称之为叫插入了,对吧,你插入到某个位置吗。
04:03
同学们有没有发现我们的这个步骤还是有点复杂的,你增加数据,你往里面插入,那么性能上就会稍微的慢一些,为什么呢?因为这些对象可能都需要挪动的感觉,对吧?诶,所以这里给大家去说一下啊,方法用起来很简单,但是底层啊就会稍微的复杂一些,而且大家想一想,当我的容量要不够的时候,跟之前是不是一样的,它也需要扩容啊,对吧?我相信这个大家应该是能够理解的吧?哎,所以这里面有一个爱的方法,传两个参数啊好了,接下来呢,我们再来往下看,来咱们的list点我们叫A,你会发现除了我们的这个方法以外,还有一个叫ADD or。这个A2是什么意思,就是把另外一个集合给我加进来,说的简单点,你原来不是张三李四王五吗?哎,我再创建一个集合,所以拷贝,拷贝以后我在这个地方我来写上它,咱们叫做other。咱们写上叫other list好了,然后呢,我把other list呢,我们来写上,它叫做点,我们叫做增加,这个增加呢写上一,然后写上一个二,写成一个三可以了啊,简单写写,写完了以后,你把我的other list给我加进去,加进去以后其实很简单呀,就等同于把123给我加进来了吧,哎,所以我运行一下。
05:16
运行以后大家看结果,首先我们张三赵六,这个赵六呢,是我刚刚艾特的时候把它插入进去了,对不对,而我的李四王五后面跟着123,所以啊,我们这个还是一个追加的功能,但是它追加的不是追加成一个了,是把这个集合中的数据全给我追加进来,对吧?哎,就这个操作我相信啊,这个一演示大家就能明白了吧?好了,那接下来呢,我们再来往下看,来我们的这个list点一下,点完了以后,除了这个方法以外,还有一些方法,比方说叫做it empty。这个is empty什么意思呢?哎,咱们前面不是讲过一个叫list.size吗?这个size呢,表述的是我们集合中元素的数量,所以说一下来我们的size方法,它表示我们叫做集合内部数据的一个数量,所以点一下我们的这边打印,然后呢,我们这边呢也给它打印一下来啊打印一下好了,同学们,现在呢,我们来看一看我们这里的张三李四王五赵六有四条数据,然后加上123有七条,所以它的长度应该是七,对吧,所以我运行。
06:20
运行以后看结果长度为七没有问题,而且呢,他说了叫empty,他问你集合中的数据是否为空,所以来写上它,要判断集合中的数据它是否为空。好了,那明显不是嘛,所以刚才打印的结果它不就是false吗?诶老师呀,那如果这个数据我全都不要了,是不是就空了,所以我们再给大家介绍一个方法,叫list点,有一个叫clear,这个clear clear呢就是清空的意思,所以啊,咱们来,咱们想它咱们这里呢,叫做清空啊集合中的数据,所以有个叫clear,好了,我们执行一下来运行,运行以后看结果,你会发现我们在前面的这个地方,我们确实干嘛呀,得到了元素是七,但是呢,我到了我这一步呢,给它clear粒掉,里面的数据就全都清空了,那么这样的话,我再判断它是否为空,那它可不就是空嘛,所以它就是出,然后呢,我去打印这个集合里面没有任何的东西,说明我的数据被删除了,所以啊,这个可粒呢,它有点像什么呢,就是全部删除的感觉,所以我们的list点它有个方法,这个方法呢叫。
07:29
这个老师,那这俩不是一回事吗?记住不是一回事,为什么你说我们的可粒不就全部删除,那么reor不也是全部删除吗?哎,这两个方法是不一样的,不一样的原因在于我们的可粒是全都不一样,而我们的这个or呢是删除啊,删除指定集合中的数据,哎,是这个意思,也就意味着是把这个集合当中的数据我全不要了,比方说咱们回过头来,同学们,我们再给大家演示演示我这个可粒啊,我们不要了。我把可粒注掉,然后呢,我再把这个集合呢,我们给放过来,什么意思啊,同学们能想明白吗?我刚才是不是增加了一个叫I all啊,我把这个集合的数据我全放进去了,对不对,然后呢,我们接下来就把它全删掉,那什么意思啊,那就没了吧,所以我们再运行,运行以后看结果。
08:18
你会发现我们当前的集合里面还有123吗?没了,为什么呢?我们全给它删掉了,对不对?诶,所以啊,我们的方法感觉名称上很像,但是确实不太一样,这个可粒呢是清除所有的,而它是删除指定集合中所有的数据啊,所以这个咱们要分清楚啊。好了,那除了这个以外,咱们再来演示点别的方法吧,比方说我的list当中还有一个方法叫什么呢?叫做包含。我问你啊,我的集合中包含某个数据吗?那么这里我写上它叫做张三,你这里不是有一个张三的数据吗?好,我就判断你到底有还是没有,所以我们直接来它返回的是一个布尔类型的,用于判断啊,来说一下用于我们就判断集合中它是否存在某条数据,那么返回我们的布尔类型的值。
09:11
所以啊,大家可以想象一下,那如果有的情况下,那肯定就是存在了呗,所以它就是true,那如果没有的话,就不包含了呗,那就是false了,所以我们运行一下,咱这肯定是我们的处嘛,因为它肯定包含了嘛,对不对,它里面就有,那如果你写上一个123呢,那肯定就没有了嘛,所以我们运行一下运行。运行以后看结果,我们这里就变成了false,没问题吧,同学们,这个相对来说还比较简单啊,好了再来,我们再继续我们的这个,除了包含以外,我们的list点一下,还有一个叫index of。这个index off什么意思呢?就是判断一下你的数据在集合中的什么位置。这个位置啊,说的还是索引,比方说张三好了,把这个拿过来,拿过来以后把这些咱们都注掉啊,咱们演示过了就给他住掉了,嗯。把它演示过呢,咱们就都给它注掉就可以了啊,这里呢,我们就给他看一看,他说了我判断集合呀,这个张三出现的位置,所以呢,我们来点一下,然后呢,我在这里把文字我们写上来,用于获取我们数据在索引中的位置,好了,那么我们试一试吧,我们运行。
10:19
运行以后大家可以看到我们的结果是几啊,零当然是零了,我们的张三不就在零上面吗?哦,老师我明白了,这个所谓的位置是不是我们还是索引的值啊,对不对,诶就是这样,所以啊同学们,我们这个没有问题,诶老师啊,那如果现在你获取一个不存在的数据,那它返回的索引的位置是什么呢?我写上123,哎,这个我没有这个数据啊,现在我们运行一下。运行以后你会发现我们当前就有一个负一,什么意思啊?负一就表示不存在的意思,如果数据不存在,那么我们返回负一就是这个道理。哎,老师啊,那如果当前集合中有两个一样的数据的话,你的这个获取的是什么呢?所以啊,我们这里接着写,我们看看啊同学们,我这里再给他来一个张三。
11:09
啥意思啊,我们第一个是张三,第二个是李四,第三个是王五,第什么四个还是张三,我把这个赵六给他住掉,我住掉了以后两个张三,那你的这个方法会得到什么呢?所以我们来把这个给它打开,打开以后呢,我现在运行一下看结果,那么你会发现我们这里得到的还是零,也有老师不对呀,你怎么没有得到我们的0123呢,都没有得到三呀。来给大家解释一下,咱们这里呢,用于获取数据在索引中的什么第一个位置。什么叫第一个位置啊,你的这个数据是允许重复的呀,那么所以呢,在集合中可以在多个地方存在,那么我们就返回它的第一个位置啊,比方说零和我们的三,我就返回零就可以了,老师,那不行啊,我想获取的最后的那个位置怎么办?这个时候呢,就有另外一个方法了,咱们叫list,点有个叫last index of,你写上它,我们叫做张三就可以了,好点一下,嗯,打印可以了,那么咱们运行一下啊,运行运行以后看结果,你会发现一个是我们的零,一个是我们三。
12:14
哎,老师呀,那如果我有多个张三怎么办?哎,再来个张三,那么这个时候你获取的结果是多少运行。运行以后,那么索引就多了一个嘛,所以它是零和解,是老师,那这个咱们能不能得到,这个你还真就得不到,为什么呢?因为它只提供了这样的两个方法,一个是获取第一个,一个是获取最后一个叫last嘛,对不对,诶就是这样。啊,这个呢,就没有办法了,同学们这个稍微要注意一下,那行了,那这两个方法咱们说完了之后,咱们接下来再看一看啊来我们的list呢,还有一个方法叫to read。什么意思呀,同学们,To a re,就是把集合变成数组的意思,所以呢,我们直接来啊,我们来VAR回车,回车以后你会发现我们的集合就变成了宿主类型啊,这个宿主类型就跟咱们之前讲的宿主是完全一样的,它就可以转成咱们的宿主啊,这个咱们就不给大家变利了啊。
13:09
然后呢,咱们再来一个叫list点,我们叫做什么呢?叫克隆,克隆什么意思啊,克隆就表示我创建一个什么新的集合的意思,所以呢,我们点一下,点VAR回车,你会发现它会克隆成一个新的对象,告诉大家这个对象依然是我们的集合,只是呢,我们克隆之后是在内存中直接复制一块内存,所以它的类型是一个通用类型,我们需要把它转换成咱们自己的类型,所以大家看一下,我们写上它,咱们叫a list等于LIST1,等于我们的克隆,然后呢,我们采用我们的强制类型转换,把它转换成a list,行了,同学们,我现在呢,把这个LIST1我们拿过来,不要忘记啊,这个克隆呢,它表述的是复制新集合啊,咱们叫新集合,那么新集合的话,就意味着这是一个新的集合,但是因为是克隆嘛,是复制嘛,它之前的数据我们这里也是有的,所以我们点击右键,我们运行一下,你会发现我们当前的数据是完全。
14:10
相同的对不对,我们方法看的很多啊,但是你会发现其实功能上还是相对来说比较简单的,大家自己下来写一写,练一练,应该没有什么太大的难度,对吧。
我来说两句