C#集合

C#集合

++数组的局限性:数组只能存储相同类型的数据

 

int[] intArray = newint[2];

intArray[0] = 1;

intArray[1] = 2;

intArray[2] =卧底; //报错类型不匹配


++集合的类型

++++泛型集合与非泛型集合。

--泛型集合类一般位于System.Collections.Generic名称空间。

--非泛型集合类位于System.Collections名称空间。

此外,System.Collections.Specialized名称空间中也包含一些有用的集合类。


++非泛型集合

++++下面是各种常用的System.Collection命名空间的类:

++++++动态数组(ArrayList它代表了可被单独索引的对象的有序结合。它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。

++++++堆栈(Stack它代表了一个后进先出的对象集合。当您需要对各项进行后进先出的访问时,则使用堆栈。当您在列表中添加一项,称为推入元素,当您从列表中移除一项,称为弹出元素。

++++++队列(Queue它代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。

++++++哈希表(HashTable它使用键来访问集合中的元素。当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值。哈希表中的每一项都有一个键/值对。 键用于访问集合中的项目。



++泛型集合

++++下面是各种常用的System.Collection.Generic命名空间的类。

++++++Dictionary<TKey, Tvalue>同哈希表一样,标示根据键进行的键值对的集合,不同的是对键值进行了类型限定。

++++++List<T>ArrayList一样,标示通过索引访问对象的列表,不同的是对存储的对象进行了类型限定。

++++++Stack<T>Stack一样,不同的是对存储的对象进行了类型限定。

++++++Queue<T>Queue一样,不同的是对存储的对象进行了类型限定。


++ArrayList动态数组

++++1、动态的增加和减少元素

++++2、实现了ICollectionIListIEnumerable接口。

++++3、灵活的设置数组的大小。

++++4、不安全的集合类型。

++++5、其元素为值类型时,效率不高(装箱和拆箱耗性能)

++++ArrayList常用方法与描述

-- Add()  将对象添加到ArrayList的结尾处

-- Insert()  将元素插入ArrayList的指定索引处

-- Remove()  ArrayList中移除特定对象的第一个匹配项

-- RemoveAt()  移除ArrayList的指定索引处的元素

-- Reverse()  将整个ArrayList当中元素的顺序反转

-- Contains()  确定某元素是否在ArrayList

-- Clear()  ArrayList中移除所有元素


++List<T>泛型动态数组

++++1List类是ArrayList列的泛型等效类。

++++2、同样继承了IList接口,IEnumrator接口和ICollection

++++3、与ArrayList不同的是,声明集合时需要声明集合内部的数据类型,即T的类型。

++++4、安全的集合类型。

++++5、某种情况时,在处理值类型时其处理速度比ArrayList快的多。

++++List<T>常用方法与描述

-- Add()  将对象添加到List<T>的结尾处

-- Insert()  将元素插入List<T>的指定索引处

-- Remove()  List<T>中移除特定对象的第一个匹配项

-- RemoveAt()  移除List<T>的指定索引处的元素

-- Reverse()  将整个List<T>当中元素的顺序反转

-- Contains()  确定某元素是否在List<T>

-- Clear()  List<T>中移除所有元素

-- IndexOf(T)  搜索指定对象,并返回整个List<T>中第一个匹配项的从0开始的索引


++常见集合和列表实现接口

++++IEnumerator<T> 这个接口定义了方法GetEnumerator(),返回一个实现了IEnumerator接口的枚举。 如果将foreach语句用于集合,就需要实现该接口。

++++ICollection<T> ICollection<T>接口由泛型集合类实现。 使用这个接口可以获取集合中的元素个数(count),把集合复制到数组中(CopyTo()),还可以添加和删除元素。

++++IList<T> IList<T>接口用于可通过位置访问其中的元素列表,这个接口定义了一个索引器,可以在集合指定位置插入或删除某些项。List<T>接口派生自ICollection<T>接口。

++++IDictionary<TKey, TValue> IDictionary<TKey, TValue>接口由包含键和值的泛型集合类实现。 使用这个接口可以访问所有的键和值。 使用键类型的索引器可以访问某些项,还可以添加或删除某些项。


++堆栈(Stack

++++1、后进先出(LIFO)的一种数据结构,本质上堆栈也是一种线性结构。

++++2、线性结构的基本特点: 即每个节点有且只有一个前驱节点和一个后续节点。

++++3、随着像Stack中添加元素,容量通过重新分配按需自动增加。

++++4、可以接受null作为有效值。

++++5、允许重复的元素。

++++6、不安全的数据结构。

++++7、其泛型为Stack<T>

++++Stack常用方法与描述

-- Push()  将对象插入Stack的顶部(入栈操作)。

-- Pop()  移除并返回Stack顶部的对象(出栈操作)。

-- Peek()  返回位于stack顶部的对象,但不移除。

-- Contains()  确定某元素是否在栈中。

-- Clear()  stack中移除所有对象。

-- Count()  获取栈中包含的元素个数。


++队列(Queue

++++1、先进先出(FIFO)的一种数据结构。

++++2、随着向Queue中添加元素,容器通过重新分配按需自动增加,可以通过TrimToSize来减少容量。

++++3、可以接受null作为有效值。

++++4、允许重复的元素。

++++5、不安全的数据结构。

++++6、其泛型为Queue<T>

++++7、在A*算法中会用优先级队列处理路径节点。

++++Queue常用方法与描述

-- Enqueue()  将对象添加到Queue的结尾处,入队。

-- Dequeue()  移除并返回位于Queue开始处的对象。

-- Peek()  返回位于Queue开始处的对象但不将其移除。

-- Contains()  确定某元素是否在Queue中。

-- Clear()  Queue中移除所有对象。

-- Count()  获取Queue中包含的元素个数


++HashTable(哈希表)

++++1、处理和表现类似key-value的键值对的集合。

++++2key值必须唯一,区分大小写。

++++3Value可以是变量,也可以是对象。

++++HashTable常用方法与描述:

-- Add()  将指定的键和值添加到哈希表中。

-- Clear()  Hashtable中移除所有的元素。

-- ContainsKey()  判断Hashtable是否包含指定的键。

-- ContainsValue()  判断Hashtable是否包含指定的值。

-- Remove()  Hashtable中移除带有指定的键的元素。

-- Keys()  获取一个ICollection,包含Hashtable中的键。

-- Values()  获取一个ICollection,包含Hashtable中的值。




#立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++立钻哥哥推荐的拓展学习链接(Link_Url

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++C#事件https://blog.csdn.net/vrunsoftyanlz/article/details/78631267

++++C#委托https://blog.csdn.net/vrunsoftyanlz/article/details/78631183

++++C#集合https://blog.csdn.net/vrunsoftyanlz/article/details/78631175

++++C#泛型https://blog.csdn.net/vrunsoftyanlz/article/details/78631141

++++C#接口https://blog.csdn.net/vrunsoftyanlz/article/details/78631122

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类https://blog.csdn.net/vrunsoftyanlz/article/details/78630945

++++C#数据类型https://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity3D默认的快捷键https://blog.csdn.net/vrunsoftyanlz/article/details/78630838

++++游戏相关缩写https://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++Unity引擎基础https://blog.csdn.net/vrunsoftyanlz/article/details/78881685

++++Unity面向组件开发https://blog.csdn.net/vrunsoftyanlz/article/details/78881752

++++Unity物理系统https://blog.csdn.net/vrunsoftyanlz/article/details/78881879

++++Unity2D平台开发https://blog.csdn.net/vrunsoftyanlz/article/details/78882034

++++UGUI基础https://blog.csdn.net/vrunsoftyanlz/article/details/78884693

++++UGUI进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78884882

++++UGUI综合https://blog.csdn.net/vrunsoftyanlz/article/details/78885013

++++Unity动画系统基础https://blog.csdn.net/vrunsoftyanlz/article/details/78886068

++++Unity动画系统进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78886198

++++Navigation导航系统https://blog.csdn.net/vrunsoftyanlz/article/details/78886281

++++Unity特效渲染https://blog.csdn.net/vrunsoftyanlz/article/details/78886403

++++Unity数据存储https://blog.csdn.net/vrunsoftyanlz/article/details/79251273

++++Unity中Sqlite数据库https://blog.csdn.net/vrunsoftyanlz/article/details/79254162

++++WWW类和协程https://blog.csdn.net/vrunsoftyanlz/article/details/79254559

++++Unity网络https://blog.csdn.net/vrunsoftyanlz/article/details/79254902

++++设计模式简单整理https://blog.csdn.net/vrunsoftyanlz/article/details/79839641

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++UML类图https://blog.csdn.net/vrunsoftyanlz/article/details/80289461

++++Unity知识点0001https://blog.csdn.net/vrunsoftyanlz/article/details/80302012

++++U3D_Shader编程(第一篇:快速入门篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372071

++++U3D_Shader编程(第二篇:基础夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372628

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/


--_--VRunSoft:lovezuanzuan--_--

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值