常用数据结构

来源:互联网 发布:ps4淘宝被禁的游戏 编辑:程序博客网 时间:2024/05/16 05:17

Array
优点:在内存中连续存储,索引速度快;访问简单,可通过下标进行访问;赋值和修改简单
缺点:声明数组的时候必须制定数组长度;插入和删除数组时,需要移动大量元素;数组长度过大时,会造成内存浪费,过段时会造成内存溢出。
使用(具体使用见具体文章):

int size = 5;int[] test = new int[size];

ArrayList :使用该数据结构时,需引用System.Collections
优点:对象大小按照其存储的数据动态扩充与收缩,声明时不需要制定长度;能够便捷的进行添加和删除操作;可以存储不同类型的元素;
缺点:将所有的插入数据当做object处理,使用时可能会报类型不匹配的错误(非类型安全);在存储和检索时会产生装箱和拆箱操作,性能损耗大;
使用:

ArrayList test3 = newArrayList();//新增数据test3.Add("chen");test3.Add("j");test3.Add("d");test3.Add("is");test3.Add(25);//修改数据test3[4] = 26;//删除数据test3.RemoveAt(4);

List (泛型List):ArrayList的泛型等效类,用法与ArrayList相似,声明时需要为其声明List集合内数据的对象类型,属于经常使用的数组类型。
优点:避免类型安全问题;解决拆装箱的性能问题;可以灵活改变长度,融合了Array可以快速访问及ArrayList长度可以灵活变化的优点(其内部为一个强类型的Array)
使用:

List<string>test4 = newList<string>(); //新增数据 test4.Add(“Fanyoy”); test4.Add(“Chenjd”); //修改数据 test4[1] = “murongxiaopifu”;  //移除数据 test4.RemoveAt(0);

LinkedList:双向链表实现的List,存储空间不连续,不能通过下标访问
优点:插入删除简单高效;适合在有序情况下增加新的元素;适用于元素数量不固定,两端存取且经常增减节点的情况
缺点:访问时必须从头节点开始遍历直至找到目标,不利于快速访问对象

Queue:先进先出,即最先插入的元素最先被删除,最后进入的元素最后被删除,通过Enqueue和Dequeue进行出队和入队操作

Stack:后进先出,只允许在尾端进行插入或删除等操作的线性表。表尾允称为栈顶(Top),另一端是固定的,称为栈底(Bottom).栈的操作使按照先进后出或后进先出的原则进行的。栈使用连续的空间存储栈中数据,类似于顺序表,比较浪费存储空间

Hashtable:hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;value用于存储对应于key的值。Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对。

HashSet:包含不重复项的无序列表。这种集合称为“集(set)”。集是一个保留字,所以该类有另一个名称HashSet。这个名称很容易理解,因为这个集合基于散列值,插入元素的操作非常快,不需要像List类那样重排集合。

Dictionary

 //定义    Dictionary<string, string> openWith = new Dictionary<string, string>();//添加元素    openWith.Add("txt", "notepad.exe");    openWith.Add("bmp", "paint.exe");    openWith.Add("dib", "paint.exe");    openWith.Add("rtf", "wordpad.exe");//取值    Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);      openWith["rtf"] = "winword.exe";    Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);    //遍历key    foreach (string key in openWith.Keys)    {        Console.WriteLine("Key = {0}", key);    }
原创粉丝点击