Photo by Greg Rakozy / Unsplash
Data structure 数据结构
“数据结构”课程是计算机专业的核心基础课程,是一门理论与实践相结合的课程,整个计算机专业教学体系中处于举足轻重的地位。数据结构是程序设计(特别是非数值计算的程序设计)的基础,也是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础。主要包含线性表、栈、队列、串、多维数组和广义表、树状结构、图状结构等问题的应用。
数据结构:Array, ArrayList,List,IList,ICollection, Stack, Queue, HashTable, Dictionary, IQueryable, IEnumerable。
Collection(集合)
Collection是数据记录集合,编写代码过程中,常常需要合适的容器保存临时数据,方便修改和查找,如何选取合适的数据容器,关键在于将执行的数据操作以及数据记录是否大量。
Array(数组)
-
固定大小,数组的大小是初始化时决定无法修改的数值。
-
强类型,存储数据元素类型必须在初始化时指定,因此在运行时,不需要耗费额外的时间来定义数组类型,能够大大提升运行效率。
-
可使用Foreach关键字实现数组迭代和查找。
因为数组大小是固定的,且是强类型数据结构,因此在运行时只占用很少的内存,运行时效率很高。
ArrayList
-
ArrayList 没有固定的长度,容量可动态增加,可应用于开发人员无法确定数组元素个数等场景,当然这种情况下,在定义结构体的时候会非常耗时。
-
ArrayList 不是强类型,ArrayList中不同元素类型可以不相同,并且需要在运行时根据实际的输入来确定元素类型。因此在运行时消耗内存较多。
-
可使用Froeach 关键字操作ArrayList。
HashTable(哈希表)
HashTable是一种定义关键字的数据结构体,使用哈希表查找数据非常方便,哈希表既不是强类型也不固定大小限制。
Stack
栈是最典型的数据结构,栈具有优先级划分的数据结构,栈为每个内容项定义优先级,表示每个Item入栈和出栈的优先顺序。因此操作栈中的数据,需要先将数据push 到栈的顶部,需要删除元素必须变成栈顶部,即要遵守后进先出(LIFO)的原则。
栈与哈希表一样既不是强类型也不限制元素个数。
Queue
Queue同栈一样也是具有优先级定义的结构体,遵循的规则是先进先出(FIFO),既不是强类型也不具有固定的大小限制
List
什么情况下需要使用List?
-
List长度可不固定
-
当数据为通用类型,List是强类型,List中元素类型不需要等到运行时来确定,这种特性使得List 运行时效率非常高。
-
可使用Foreach关键字。
因为List不需要设定固定的大小,List灵活度高,且效率高常用于开发过程中。
IList
IList 继承了List,包含多种方法的List接口。如果你无法判断代码改动的可能性,可以使用IList接口,减少模块之间的依赖性。IList是接口因此无法被实例化,所以必须使用List来初始化。
IEnumerable
IEnumerable常用于遍历集合元素,但是无法修改(删除或添加)数据,使用IEnumberable 会从服务器端将所有数据拷贝到客户端,并进行一定的过滤,如果服务器端有大量数据会造成内存负载超重。
IQueryable
IQueryable与IEnumberable不同的是,当从服务器端加载过量的数据,IQueryable会自动减少应用负载。IQueryable可保证大数据量时应用程序的高性能。IQueryable会先过滤数据,然后发送给客户端。
SQL Profiler:
如何追踪查询语句生成TSQL,生成需要的数据结构体:
step 1
Start -> MS SQL Server 2008 -> Performance Tools -> SQL Server Profiler
step 2
SQL Server Profiler -> File -> New Trace
Step 3
输入连接数据库的用户名和密码
Step 4
General (Tab) -> Use the Template: Standard
Step 5:
Event Selection (Tab) -> Event : TSQL -> Select : SQL-BatchCompleted | Select Show all Columns
Press Column Filter -> Database Name: Like: "DataAccess"
Step 6:
查看结果(省略)
Dictionary 及 IDictionary:
Dictionary 可通用,而哈希表不是通用的。Dictionary定义 <TKey,Tvalue>。IDictionary是Dictionary的接口,如果在后期开发中需要大量修改,建议使用IDictionary。
以上为数据结构代写课程,您可以参考全部关于CS代写课程!
引用:
[1] https://blog.csdn.net/long316/article/details/52595248