C# DataConstruct 数据结构关于 Array,ArrayList,List,HashTable,Dictionnary的学习记录
Array:
数组,开辟连续存储的内存存储数据.Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据
优点:
1.查询速度快,可以利用索引快速查询到对象
2.类型安全,支持值类型和引用类型的array数组
缺点:
1.要定义容量,容量大了容易造成内存溢出
2.不利于在数组中间插入数据,因为会导致后面的数据重新编排索引
ArrayList:
解决Array的问题,集成IList接口,可以动态的插入数据
1、ArrayList底层采用数组实现,当使用不带参数的构造方法生成ArrayList对象时,实际上会在底层生成一个长度为10的Object类型的数组
2、如果增加的元素个数超过10个,那么ArrayList底层会生成一个新的数组,长度为原数组的1.5倍+1,然后将原数组的内容复制到新数组中,并且后续增
优点:
1.动态插入数据,不需要初始化大小
2.可以在中间插入数据
缺点:
1.需要装箱\拆箱,因为类型只支持object
2.类型不安全.
3.默认初始大小10,如果超出后增量1.5倍,并且将原来的数据挪到新的空间下,性能较差
4.、对于ArrayList元素的删除操作,需要将被删除元素的后续元素向前移动,代价比较大
List:
类型安全,支持泛型类,是普通业务中比较适用和常用的类
优点:
1.类型安全,List<T>支持任意类型的数据,如果是值类型,内部使用Array
2.避免了多余的装箱、拆箱操作
3.不需要初始化大小,在中间插入也支持
常用的数据类型的使用方式,替代品。
原文地址:https://github.com/dotnet/platform-compat/blob/master/docs/DE0006.md
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件