常用数据结构

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

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

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

ArrayList
 test3 = new

ArrayList();

//新增数据

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 = new

List<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);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值