专业的编程技术博客社区

网站首页 > 博客文章 正文

C#编程(c#编程语言)

baijin 2024-10-15 08:30:56 博客文章 7 ℃ 0 评论

C#高级泛型集合-List。

首先来看一下这个T,这个T指的是泛型吗?对不对?泛型集合可以添加纸类型,也可以添加银类型,这个没什么问题吧?如果连这个都不会,还是去阶段依据学习。

这个地方有个第三点,它是以两倍速度进行扩容,是怎么以两倍速度进行扩容?其实底层用到了一个算法,叫左移,左移移位其实就是乘以二的意思。它到底是不是左移二?待会来验证一下好不好?

首先再来一下test,来看一下它是不是以两倍的速度进行扩容。首先来验证一下第一个问题,testlist一,先来看一下它是不是以两倍的速度进行扩容。先用简单的发型结合,直接输出它的capcity,capcity是它的容量,不要用com,com的是它的元素的数量,这个时候给它打印出来肯定是零,当然了也可以给它打印,都给它打印元素的个数。

这个是元素的个数,然后它的容量也打印一下,来看一下它俩的变化到底是什么?首先运行一下,看下它打印的是什么?元素的个数是零,容量是零,但是如果这里面一旦有一个元素,那么它以两倍的速度进行扩容,出容量会是多少?看一下初始容量是多少?初始容量是四,假设这个时候有三个元素,来看一下capacity到底是多少?

我猜测它应该是四,为什么?因为现在元素只有三个,满了吗?我是不还没满?没满会扩容吗?没满是不会扩容的同志们,所以这个地方输出的应该是三和四,我猜测是这样的,来看一下,三和四,这个地方没有时间备课,先事先说明一下,待会如果翻车,请同学们稍微见谅一下。

这个是个地方,给它来一个四,给它来一个四之后初始容量是满,满了以后是不是要扩容?刚刚吹过的牛逼说它是以两倍的速度轻扩容,也就是容量会变成应该是八,这个地方应该是四,看一下是不是以两倍的速度进行扩容?没满是吧?容量是四,容量是四没满,再加个元素,非要占满了容量,四个占满了以后才会扩容,这个时候变成八了,是不是双倍两倍的速度进行扩容?

来看一下底层代码到底是怎样的?看一下是乘以二还是用左移。位移算吗?左移一位,其实也是乘以二的意思。我记得不知道是加还是多念啥,这个我有点忘了,因为我平时既写java开发又写多内的开发,所以有些代码我可能会记混。

现在看一下它的原码,看下它的原码,这个原码到底是怎么扩容的?搜索一下,这个代码太多了,搜索一下,搜索一下,二,对吧?你看这个地方是不是星号二乘以这个长度,也就是说你看grow是什么增长,如果说我增长的时候这个地方有一个newcare ct新的容量,看到吗?在多段的里面它是乘以二,也就是说如果应该是java里面它应该是左移一,位移算,其实也是一个意思。

这个地方我就不给大家做过多的描述了,常用的属性一个是come的一个是ct当前的容量,如果说它大于当前的元素就会去扩容,这里面用到了这么多的常用的方法,这个方法我其实是事先给大家准备好的,一个一个来看一下。

首先我在这个地方,因为历史的集合经常用,大家也比较熟悉,所以我这个历史的集合会讲的稍微快一些,重点还是在后面一些集合,这个是重点。

首先初始化元素是二三七五九,这个地方add是什么意思?add指的是添加一个元素,这个添加是往最后面添加的,所以这个十会排在最后面。这个inset二六,这个二代表的是 wage六,代表的是元素,那我要往第二个位置去添加其实是第三个位置,因为这个集合或者说输组是从下标零开始的,所以第二个位置,第三个位置,也就是三的后面,对不对?所以最终的结果是二三六七五九十。

这个地方吕某某,这个二代表的也是位置,不对,这个地方代表的是元素,那么你把on给移除了,剩下的就是三六七五九十,对吧?这个吕蒙艾特,艾特代表的是你在哪个位置删除,零代表是第一个元素,那我把第一个元素给删掉了,剩下的是不是就是六七五九十,对不对?

吕蒙a range,吕蒙range这个一代表的是批量算数,那也就是说我从哪个位置开始删,删哪几个元素,删两个元素对不对?我从一这个位置开始删,那也就是第二个位置,对不对?第二个位置,那也就是七喽,删几个,是不是删两个?删两个是不是把七和五给删了,所以剩下的是六九十。

这个代码大家拿过去自己去试一下,这个代码非常的简单,拿过去自己去试一下,用的蛮多的,这些例子集合,这里面这些方法用的还是蛮多的。是自己去敲一下,敲完了之后看一下结果,自己尝试一遍好不好?这个代码大家自己去打个断点去看一下,因为这个例子集合用的还是蛮多的,大家平时用的也比较熟练,就不给大家重复的去演示了。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表