C#常用的数据结构
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#常用的数据结构,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2405字,纯文字阅读大概需要4分钟。
内容图文
![C#常用的数据结构](/upload/InfoBanner/zyjiaocheng/634/1e44be44ad8e414aa8af76a71e07206e.jpg)
一、常用数据结构
Array,ArrayList,List,LinkedList,Queue,Stack,Dictionary<K,T>
二、常用数据结构总结
数组(Array):
1、数组存储在连续的内存上
2、数组的元素类型必须相同
3、数组可以直接通过下标访问
4、查找与修改元素的速度非常快
5、必须在声明时指定长度
缺点:
1、在连续存储在两个元素之间插入新的元素不方便。
2、声明一个新的数组时,必须指定其长度,这就会存在一个潜在的问题,那就是当我们声明的长度过长时,显然会浪费内存,当我们声明长度过短的时候,则面临这溢出的风险。
为了解决数组Array创建时必须指定长度以及只能存放相同类型的缺点而推出的数据结构ArrayList
动态数组(ArrayList):
1、ArrayList的底层其实就是一个数组
2、不必在声明时指定长度,会根据存储的数据动态增加或减少长度
3、插入和删除一个元素时,会移动它之后所有元素的位置,效率低,频繁进行插入删除元素时推荐使用LinkedList
4、ArrayList会把所有元素都当做Object处理,因此可以存储不同类型的元素
缺点:
ArrayList是非类型安全的,而且在插入和删除元素时会进行拆箱和装箱的操作,消耗性能,效率低
为了解决ArrayList不安全类型与装箱拆箱才有了泛型,List的内部其实也是一个Array。List是类型安全。没有装箱和拆箱的操作。融合Array可以快速访问的优点以及ArrayList长度可以灵活变化的优点。所属命名空间:System.Collections.Generic
泛型List:
1、List是ArrayList的泛型等效类
2、需要在声明时通过泛型指定类型
3、没有拆箱装箱操作,因此在大多数情况下List要比ArrayList效率高且类型安全
双向链表(LinkedList):(链表适合元素数量不固定,需要两端存取且经常增减节点的情况)
双向链表(LinkedList)和上述的数组最大的不同之处就是在于链表在内存存储的排序上可能是不连续的。这是由于链表是通过上一个元素指向下一个元素来排列的,所以可能不能通过下标来访问。
优点:
1、向链表中插入或删除节点无需调整结构的容量。因为本身不是连续存储而是靠各对象的指针所决定,所以添加元素和删除元素都要比数组要有优势。
链表适合在需要有序的排序的情境下增加新的元素,这里还拿数组做对比,例如要在数组中间某个位置增加新的元素,则可能需要移动移动很多元素,而对于链表而言可能只是若干元素的指向发生变化而已。
缺点:由于其在内存空间中不一定是连续排列,所以访问时候无法利用下标,而是必须从头结点开始,逐次遍历下一个节点直到寻找到目标。所以当需要快速访问对象时,数组无疑更有优势。
堆栈(Stack):
先进后出原则,最先插入的元素最后被访问,最后被插入的元素最先被访问
队列(Queue):
先进先出的原则,最先插入的元素最先被访问,最后插入的元素最后被访问
字典(Dictionary):
1、创建字典时需要指定key和value的类型
2、字典中的key的值必须唯一,value的值不唯一
3、可以通过key快速查找对应的value,速度快,但是消耗内存
内容总结
以上是互联网集市为您收集整理的C#常用的数据结构全部内容,希望文章能够帮你解决C#常用的数据结构所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。