来上海已经一段时间,感慨颇多,经历几轮的面试慢慢的发现,语言这方面不能以会用为标准,要懂,深入了解。路漫漫其修远兮,吾将上下而求索。
数据结构在不同的使用者中有着不同理解,但一千个人眼中的哈姆雷特还是那个哈姆雷特。
数据结构:同一类数据元素中,各个元素之间的关系,包括三个成分,数数据的存储结据的逻辑结构,构和数据的运算结构。顾名思义数据结构将会常与各种算法联系在一起。 下面来看几个基本的常用的数据结构吧
实际编程中我们常用的数据结构不外乎以下几种:Array、ArraList、List
Array: 作为C#中最简单基本的数据结构其特点:1、数组中数据存储在连续的内存上。2、存储的数据类型相同。3、通过下标可直接访问。声明一个属数组时,将在堆中分配一段连续的内存来储存数量为n的数据。存储的数据为值类型时,在分配的内存中会有n个未装箱的值类型被创建;存储的数据为引用类型时,在分配的内存中会有n个引用类型的索引被创建。
优点: 数组在内存上是连续的存储,因此它的索引速度很快,访问其中的一个元素的时间是恒定的,与其的元素数量无关,数组中赋值与修改的元素很简单。缺点:1、数组是连续存储,在其俩个元素中插入一个新的元素变得不方便,2、在声明数组时,必须制定其长度,就会产生当我们声明的长度过长时浪费内存,当声明的长度过短时,会有溢出的风险。这种随机定义数组长度的不稳定性,严重影响了使用Array的使用频率,针对这种缺点,由此引出ArraList。
ArrayList: 针对Array声明时需要指定长度和只能储存相同类型的限制,推出了 ArrayList。ArrayList需要引入System.Collections。
优点:(1)使用中不用申明其长度,ArrayList是根据其存储的元素长度来动态变化的。(2)ArrayList可以存储不同类型的元素,ArrayList中所有存储的元素都会当做Object来处理,所以能存储不同的元素。缺点:(1)发生装箱和拆箱:由于ArrayList中所有的存储的元素都被当做Object类型来处理,值类型在存储中会转换为引用类型(装箱),读取过程中会再转换为值类型(拆箱),装箱时会生成新的引用类型,有时间消耗,影响效率。(2)ArrayList存储类型是不安全的(原因会在深入了解中解释)。因此在实际操作中考虑到安全和效率ArrayList也是几乎不怎么用,下面综合上面的优点、用的最多的List
List
优点:(1)保证了存储元素的类型的安全(2)取消了装箱和拆箱,同时也融合了Array的快速访问和ArrayList长度的灵活的优点。
Queue
Stack
Dictionart