00:01
关于数组的便利访问,那其实A瑞buffer跟AR瑞是完全一样的,因为之前我们介绍A瑞的时候。几种不同的方法去遍历数组当中的元素,其实都不依赖当前array的具体类型,只要是scla当中的集合类型,那几种方法都通用,比如说便利当前的数组下标是一个range,或者直接便利当前的集合元素啊,类似于增强for循环的方式,还可以使用迭代器或者直接调用for each方法,这些对于buffer都是通用的啊,那甚至后面我们讲到的其他一些集合类型也是通用的,我们这里就不再重复了啊,那这里需要给大家说明的一下是,我们会发现在这里这个。瑞一直接拗了一个瑞buffer之后,这里它其实里边是空的。那如果它里边什么东西都没有的话,我们想要使用它,那当然就得往里边去添加元素了,但是大家会看到我直接这里对瑞一如果要是直接做一个访问的话,它是直接会报错越界的,那当然就不能用赋值的这种方式直接往里面添加元素,所以接下来我们重点要考虑的是怎么样向数组添加新的元素。
01:21
添加元素啊,那前面其实我们给大家说过一个,呃,RA里面添加元素的方法,它是。还记得那个方法叫冒号加,或者是加冒号啊,如果大家要是呃,总是记不得这个哪个前哪个在后,因为有可能加到数组的末尾,也有可能加到数组最前面嘛,那大家最好还是不用点的这种方法调用的方式,而是写成空格的方式,这样一旦你的顺序写错,它直接会就是当前语法就会报错啊,那这样就看的很明显,所以比方说我们添加一个15。
02:01
加一个数后边,那是不是现在一的值就改变了呢?我们可以直接把它做一个打印。前面我们还是按一行的分界线,这样会看得更清楚一点。大家看到这里边还是空的一个瑞一啊,这里大家需要注意一下是上面我们好像什么都没有输出对吧?啊,这个主要是因为我们用到了这个mix string,其实这里如果要是不掉mix string的话,一直接输出。它直接string的时候,也是要把当前的类型集合的类型显显示在这里的,它是一个空的buffer啊,在这里边我们看到直接这么添加显然是没有用的,所以大家要注意当前冒号加的这个操作呢,其实主要是针对不可变集合来用的,如果是A瑞buffer这样的可变集合也可以调这个方法,但是那就同样。
03:03
要把它付给一个新的数组,这样的话,呃,添加才是有效的,那这里边我们打印这个NEW21的话,会看到它能够把这个15添加进来,那如果说我们还想看一下瑞一和NEW2瑞一是否是同一个对象啊,那其实大家知道肯定不是同一个对吧?如果它俩的值都不一样的话,那肯定,呃,当前这个对象的引用也是不同的。大家可以看到,这就是我们当前的这样的一个状态啊,那接下来我们就考虑了,既然这种方法最好,这是针对可变不可变数组用这样的冒号加或者加冒号的方法,那针对可变数组又该用什么呢?啊,他用的方法是我这里也给大家写出来啊,是加等于,就是这个加等于的话,我看的会更加的清楚,这就跟我们之前。
04:05
段数运算符,然后再叠加一个负值运算符的那个操作很类似对吧?这就相当于是一等于一加19嘛,那要这么说的话,就相当于是把19追加到瑞一后边,然后再赋给瑞一,那瑞一的值不就改变了吗?啊,这个看起来很符合我们的语法习惯,那接下来我们再看一下这个二一的值有没有发生改变。但到现在确实里边会有一个值是19啊,那呃,有同学可能就想了,那能不能再把得到的这个值付给另外的一个数组对象呢?所以我们要给一个NEWRA2,我们看一下inline new2。是否能够获取到这个值?看到是可以的,也可以做这样的一个赋值,也就是说当前的这个方法调用,如果我们点进去的话,你会发现它会把当前的this返回,也就是把我们得到的这个集合类型要直接返回来的啊,那所以。
05:13
这样的话,New array2和这里的ARRAY1它们的值是一样的,那问题就来了,当前它俩的引用是否一样呢?哎,其实这个我们一看这种表达式应该就能知道,当前肯定就就是把瑞一的引用付给了new瑞二,所以如果我要判断它俩的引用是否相等的话,那应该也会返回一个。不,他们确实是引用是这样,所以这里就需要跟大家说,最好我们就不要把当前做了这样可变数组啊,直接改变它之后得到的结果再去返回给另外一个值。因为这样返回之后呢,假如说。
06:00
接下来我们把这个瑞二它本身也是一个可变数组嘛,啊,那接下来假如我在它后边加一个13,那大家可以想象一下当前的NEW2,瑞二肯定是变化了,那瑞一呢。我们正常来讲的话,你这里只变new瑞二,瑞一应该跟它没关系啊。但是我们知道,如果是引用类型的话,当前的new瑞一也会把13加在后边,呃,就是当前的A瑞一也会把13加在后边,这就是我们说的引用当前只是一个地址,那如果说当前对应的这个地址是相同的话,那么new a瑞二里边的内容改变,那瑞一指向的地方内容也就改变了。啊,所以这个是就是引用类型里边一个非常大的坑,大家一定要小心,所以一般推荐大家使用啊,就是。对于可变类型而言,不推荐大家把经过操作之后得到的那个集合类型的值再去付给一个新的值了啊,这样的话就看的就很不明确嘛,而对于这个不可变类型的集合而言,我们一般不是,一般是你只要想要得到它最后的结果,更更改之后的结果,那就必须要把当前的这个值付给另外的一个数组对象啊,那所以他们的这个使用过程是完全不一样的,大家一定要区分开。
07:29
这里边还有另外一个考虑啊,有同学可能想到了,那你现在是能够往后边去追加,能不能往前面去追加呢?哎,当然也是可以的啊,我们之前的那个定义类似之前往后追加是冒号加,往前追加是加冒号,那现在我们往后追加是加等于。那有同学说哦,那往前追加是不是等于加呀?啊,不是啊,因为往前追加我们自然就想到了,最好是。直接写的时候防止写错,我应该是能把这个整数写前边,然后加上这个运算符,我们的方法名,后边再加当前的这个数组对象,那什么样的。
08:10
运算符啊,什么样的方法名称能够有这样反过来的结合顺序呢?之前我们提到过必须要以冒号结尾的运算符,哎,所以当前这个的话就区分的很明显,顺序执行,呃,顺序从后边去追加元素的这种方法是加冒加等于,那么从左边从开头去追加元素的方法呢,是加等于冒号,或者后边直接一个冒号就完了,所以如果我们要叠加一个新的数的话,比方说我们在这个一。前边追加一个77,看的非常的明显。该在前边对吧?啊,那这个时候我们直接运行一下。
09:00
在这里就可以看到二瑞一变成了三个数啊。当然这里如果大家想要看一下U瑞二的话,你会发现它也随之发生了改变,因为他们俩指向的是同一个引用。这个大家一定要注意一下啊,所以这个过程大家就发现了,呃,这个又是这个加冒号,冒号加又是加等于加等于冒号,这个就乱七八糟,就感觉很容易搞混,那实际使用的时候怎么办呢?啊,如果有同学觉得这个加等于更好用的话,用这个也行,但是更加推荐大家的是。这就是我们前面说的一个推荐大家的一个原则啊,就是对于。不可变类型的集合而言,推荐大家直接用这种符号去做处理,而对于可变类型的集合呢,像厄瑞buffer,推荐大家直接调用其他的方法,什么样的方法呢?这里边给大家介绍一下,被衣后边可以直接调一个叫做aendd的方法啊,那这个就英文名称非常的明确了啊。呃,我们知道在这个string builder里面也可以调类似于APA这样的方法,就是在后面追加嘛,所以这里比方说我们给一个36,很明显它就是在当前一的末尾做一个添加。
10:18
啊,那当然了,我们也可以在前边去做添加,前边怎么做添加呢?啊pre啊,一看这个名称我们就知道到底是往哪去添加了,就非常的明确啊啊那这里比方说给一个11第16啊,大家看可以添加多个,目前的参数是可变成的啊,所以当前想要添加几个其实都是可以的,那另外除了样的末尾和在前面添加之外。的好处在于还有其他的方法可以任意位置做添加,而这个方法那就是大家更加熟悉的来看insert也可以在某一个位置做添加,方说我指定大家看两个参数啊,一个是当前的索引位置在一的这个位置,然后啊后边那就是要添加的这个数据了,而且老是一个变长的数据参数,这里就可以添加多个,比方说我添加一个13,添加一个59,好。
11:24
那接下来我们可以直接LINE1看一看之前的一到底变成了什么。我们看到在之前70、70、93的基础上,首先。在第一个位置,呃,首先我们是在最后添加了一个36,然后在前面呢,追加了11和76,然后呢是在原先的一索引位置,那一索引位置之前是76,那现在在这个位置要添加76,就赶到后边了,这里添加了13和59。
12:02
呃,这就是在当前任何一个位置都可以添加数据,就更加的灵活了,呃,那呃,当然了,就是有同学可能想到,除了这个呃,添加当前这个添加元素,添加多个元素之外,能不能直接添加一个数组呢?啊其实前面我们在调用这个方法的时候,大家也看到了啊,所一这里边还有一个方法叫做insert or,对吧?这个insert or的话,自然意思就是说我可以在任意位置后边直接去追加一个,直接去追加一个互组类型啊,比方说我们直接追加前面的这个new位一吧,那样的话就是在某一个位置啊,比方说我们在这个二这个位置直接一个数组的所有元素都添加进来了,这也是可以做到的。那另外还有一个添加的方法来看到叫end orend or,当然就是。
13:02
直接在后面去添加了对吧?啊,那与之对应的还有pre是直接在前边去添加所有的元素,这个都是可以直接去做到的啊,比方说我们把这个6V2。加到这里,对应的我们再来做一个打印输出。可以看到现在的这个长度就非常的长了,首先前面的这个内容。呃,这个应该new瑞二的话,之前我们应该是到了。哦,这个因为我们当前new瑞二和A瑞一完全都是一样的啊,他们指向的是同一个引用,所以我们相当于把这个复制了一份对吧?呃,这个当前一添加的话,New瑞二跟后面这个长度是完全一样的,然后我们看一下当前添加的这个,呃,INSERT2啊,这里边new瑞一之前我们是只有一个元素。
14:02
之前我们这里添加过一个15,哎,所以当前我们其实是在。索引位置是二的地方,也就是十一十三后边啊,这里添加了一个15,然后后边是我们之前的所有元素,这就是当前添加元素的。不同的操作比较复杂,推荐大家使用这种直接调这个英文名称的方法,这样的话语义比较明确。
我来说两句