00:01
当然我们发现在不可变列表里边不能够随便去更改元素的值,那它主要用来干什么呢?呃,就是我们说的,它主要就是用来保存按照顺序排列的一组数据,那我们主要就是要不就是遍历数据,要不就是在头在尾去添加数据,所以接下来我们要考虑的当然就是要列表里边添加元素,那么添加元素的话,自然我们就想到了应该调用某种方法,而且应该是可以在末尾添加,也可以在开头去添加啊,那其实这一部分添加元素的方法呢,跟AR瑞是非常的类似,这里边我们可以直接随一到一个。加冒号方法,直接添加一个十啊,那其实大家知道加冒号的话,代表的是在当前的当前列表的前边去追加一个数啊,那同样对应的我们可以定义一个LIST3低于LIST1。
01:12
冒号加这个方法,那就代表的是它的后边添加一个数啊,当然大家如果他记错的话,我们可以还是写成。空格的一种方式,那像线前面这个,你如果顺序不对的话,那就相当于直接会报错了啊,所以这就提示我们需要直接。把当前的列表和添加的数字做一个调换,就看得很明显,到底是添加在后边还是添加在前边啊,接下来我们可以直接把对应的列表来做一个打印输出哦,我们直接打印这个当前的列表的值啊,不是打印某一个元素的值,我们看一下列表123现在是什么样子。
02:08
啊,大家看到列表一是不变的,它无论做什么样的操作,调什么方法,自己不会改变,而列表二呢,是在它前面加了一个十,列表三在它后面加了一个23,这就是我们这样的一个状态,接下来我们空一行分割开,然后再介绍另外一种添加元素的方法,哎,那这就是前面我们提到过的啊,在添加元素的过程当中呢。之前我们在讲这个list本身,它里边实现的子类里边介绍了一个双冒号这样的一个特殊的子类,那这个子类到底有什么用呢?呃,简单来讲,我们可以直接。在这里啊,直接list,基于LIST2吧,盗用一个特殊的方法,方法就直接叫做双冒号。
03:08
当然了,当前的例二不能得到任何的返回值,所以我们需要不可能改变啊,所以我们需要用另外的一个变量去获取它得到的这个结果啊,那然后这里边我们可以随便给一个值,比方说51。那当前这个双冒号到底是干了一件什么事呢?双冒号本身是list,大家看到啊,这是。List这个抽象类里边定义出来的一个方法,这个方法是干什么呢?啊,没干什么事儿,他就直接拗了一个,大家看。双冒号这里的一个类的实例,那当前的这个双冒号是什么呢?就是他自己这里定义的这个子类型。所以相当于就掉了它的一个构造方法嘛,它本身就是一个list,那这里面就有问题了啊,大家可能就会觉得你当前这么调,这是绕一圈是为了干什么呢。
04:06
那这里边其实就是相当于把我们还进来的这个新的值添加到了当前这个LIST2的后边。你看里边做的做的这个操作啊,其实就是这样的一个概念啊,这里需大家需要注意的一点是这样的一个调用,其实不是说把它放在后边,这样其实是放在了开头,我们可以做一下测试,大家可以看一下这个结果啊twenty is4。直接运行一下。大家看到前面这是LIST2,现在我们LIST4添加的时候是把51加在了前面。哎,这样定义到底有一个什么好处呢?它主要是用在这个这样的一个场景里边,大家还记得前面我们在这个list里边,除了双冒号之外,还有一个实现了list的一个对象,它是new表示空列表,对吧,什么都没有的一个列表,所以它既然是一个本身也是一个列表嘛,它是不是也可以调当前的双冒号这样的一个方法呀。
05:21
哎,所以其实我们一般很少直接用双冒号去做这个添加元素的,就是基于一个列表去添加元素的这个方法,而是用用它来干什么呢?用它来相当于创建一个新的列表,所以大家看我这里边可以有一个LIST5直接基于谁呢?基于new去掉。当前的双冒号方法里边传入一个13,这就表示当前LIST45里边只有一个元素是我们的13。啊,那还有同学可能就会觉得奇怪,那为什么呃,就是这个13非要添加在它的前边呢,你如果它主要是用来用这个new去创建一个新的列表的话,那我当前这个往前面添加,往后面添加,那不是一样吗?
06:16
哎,这个好处就在于我们可以写成大家回忆一下,之前我们不是说方法调用的这个点号可以去掉吗?可以省略吗?哎,那所以如果说我们想要把它去掉的话,那调用的顺序就应该是什么呢?现在又是一个冒号结尾的运算符,所以它调用顺序是从右到左,那省略之后的效果就变成了。你定一个例四六,就应该是比说N12添加的时候,然后最后才是你。啊,那所以我们现在就是如果要是创建一个呃,新的一个列表啊,就可以有这样的一个操作方式,我们根本就不考虑应该的东西怎么写去拗,也不去用这个list的半生对象啊,我们直接就可以把所有想要的数都写出来就可以了,比方说哎,我们这里来一个十七一个数,然后再想到这边是不是就随便给一个二十八五十九。
07:25
六只要按照顺序全定义出来,最后只要在双冒号跟上一个new,那么它的结合顺序不就是一直从右到左,首先基于你调用它的双冒号方法得到了一个,那就是空列表,然后加了一个数据,只有一个16,然后得到的是一个新的列表了,有一个元素的列表,这一个列表呢,再调它的双冒号方法填在它的左边。在它的开头添加一个59,变成了两个元素的列表依次添加,哎,所以大家看,按照这个结合顺序的话,就可以巧妙的让我们非常方便的定义出一个列表。这种方式尽管看起来语法有点诡异,有点奇怪,但是其实对于一个程序员来讲非常好理解,而且根本不会犯错啊,我们根本不需要记忆什么,甚至比我们前面直接list,后边给出一串这个对应的数据还要简单啊,我们只要想当前要什么数,就直接往后一个一个排就可以了。
08:31
所以这种创建列表,使用列表的方法还是比较常见的啊,大家需要把这种方法做一个一个测试,要掌握这种方法,我们可以把这个LIST7打印输出来,可以看一下底是什么样的一个效果。大家看到这就是我们定义出来按照顺序从左到右四个数字。这是当前添加元素以及另外一种创建新列表的方法,涉及到了历史里边的两个呃,扩展出来的子类型和对象new以及双冒号。
我来说两句