网站首页 > 博客文章 正文
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这个一代表的是批量算数,那也就是说我从哪个位置开始删,删哪几个元素,删两个元素对不对?我从一这个位置开始删,那也就是第二个位置,对不对?第二个位置,那也就是七喽,删几个,是不是删两个?删两个是不是把七和五给删了,所以剩下的是六九十。
这个代码大家拿过去自己去试一下,这个代码非常的简单,拿过去自己去试一下,用的蛮多的,这些例子集合,这里面这些方法用的还是蛮多的。是自己去敲一下,敲完了之后看一下结果,自己尝试一遍好不好?这个代码大家自己去打个断点去看一下,因为这个例子集合用的还是蛮多的,大家平时用的也比较熟练,就不给大家重复的去演示了。
猜你喜欢
- 2024-10-15 Python 速度慢,试试这个方法提高 1000 倍
- 2024-10-15 C# 文件操作浅析(c#代码文件)
- 2024-10-15 从零开始自学C#基础的第十五天——数组的基本用法
- 2024-10-15 浅谈C#取消令牌CancellationTokenSource
- 2024-10-15 总结了才知道,原来channel有这么多用法
- 2024-10-15 面向对象(8-15)异常类-C#编程零基础到入门学习
- 2024-10-15 .NET 6 中 LINQ 的改进(.net 调优)
- 2024-10-15 Log4net配置文件 C#(c# log4j)
- 2024-10-15 C# BIN文件读取以及CRC校验(匹配STM32F103)
- 2024-10-15 C#如何对String中的Contact/Join方法进行优化的
你 发表评论:
欢迎- 最近发表
-
- 给3D Slicer添加Python第三方插件库
- Python自动化——pytest常用插件详解
- Pycharm下安装MicroPython Tools插件(ESP32开发板)
- IntelliJ IDEA 2025.1.3 发布(idea 2020)
- IDEA+Continue插件+DeepSeek:开发者效率飙升的「三体组合」!
- Cursor:提升Python开发效率的必备IDE及插件安装指南
- 日本旅行时想借厕所、买香烟怎么办?便利商店里能解决大问题!
- 11天!日本史上最长黄金周来了!旅游万金句总结!
- 北川景子&DAIGO缘定1.11 召开记者会宣布结婚
- PIKO‘PPAP’ 洗脑歌登上美国告示牌
- 标签列表
-
- ifneq (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)