C#_集合类_Array,Arraylist,List,Hashtable,Dictionary,Stack,Queue_学习资...
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类。我们经常用HashTable 来存储将要写入到数据库或者返回的信息,在这之间要不断的进行类型的转化,增加了系统装箱和拆箱的负担,如果我们操纵的数据类型相对确定的化 用Dictionary<TKey,TValue> 集合类来存储数据就方便多了,例如我们需要在电子商务网站中存储用户的购物车信息(商品名,对应的商品个数)时,完全可以用 Dictionary<string, int> 来存储购物车信息,而不需要任何的类型转化。…… 在C#编程中,集合类是管理对象的重要工具,提供了灵活的数据存储和操作方式。本文主要探讨了几个常用的集合类,包括Array、ArrayList、List<T>、Hashtable、Dictionary<TKey, TValue>、Stack和Queue,以及它们的特点和应用场景。 1. **数组**(Array):数组是最基本的数据结构,它是一个固定大小的内存块,用于存储相同类型的数据。数组可以通过索引访问,但一旦定义大小,就不能动态调整。System.Array.Resize()方法虽然可以改变数组大小,但其实质是创建了一个新的数组并复制原数组的内容,原数组不再可用。数组的优势在于直接通过索引快速访问元素,但不适用于数据量变化频繁的情况。 2. **ArrayList**:ArrayList是非泛型集合,它可以存储任何类型的对象,因为它的基础类型是object。ArrayList提供了诸如Add、Remove、RemoveAt、Reverse、Sort等方法来操作元素。然而,由于ArrayList内部使用object存储,存在装箱和拆箱操作,可能导致性能损失。 3. **List<T>**:List<T>是泛型版本的ArrayList,提供了类型安全的列表操作。它比ArrayList执行效率更高,特别是当T是值类型时,避免了不必要的装箱和拆箱。List<T>支持索引访问,还提供了许多便利方法如Insert、IndexOf、Clear等。选择List<T>还是ArrayList,取决于是否需要类型安全和性能优化。 4. **Dictionary<TKey, TValue>**:Dictionary类是一个键值对的集合,使用哈希表实现,提供了快速的查找性能。在需要根据特定键访问数据的情况下,Dictionary是一个理想的选择,比如在存储购物车信息时,可以使用Dictionary<string, int>存储商品名和数量,无需类型转换。Dictionary的遍历顺序与添加顺序一致,不同于Hashtable。 5. **Hashtable**:Hashtable是另一种键值对集合,非泛型,键和值都是object类型。它使用哈希表结构,提供快速的键查找,但不保证键的排序。在多线程环境中,如果需要线程安全,可以考虑使用Hashtable。而在单线程环境中,Dictionary通常更具优势,因为它提供了泛型支持和更好的性能。 6. **SortedList<TKey, TValue>**:SortedList类类似于Dictionary,但它内部维护了一个排序的键列表,适合需要按键排序的场景。 7. **Stack**和**Queue**:Stack是后进先出(LIFO)的数据结构,用于实现堆栈操作,如Push和Pop;Queue则是先进先出(FIFO)的数据结构,如Enqueue和Dequeue,常用于处理队列任务。 在选择集合类时,应根据实际需求考虑数据类型、大小、性能、线程安全等因素。在C#中,泛型集合类通常比非泛型类更高效、更安全,但在多线程环境下,需要额外注意线程同步问题。了解这些集合类的特点,能帮助开发者更好地管理和操作数据,提高代码的效率和可维护性。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/3531997/bg1.jpg)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
- duoremi_lj2013-01-20刚开始写容器,谢谢楼主的资料
![avatar](https://profile-avatar.csdnimg.cn/4ac28729164f4602b2c27ae62c225b7e_juelingfeng.jpg!1)
- 粉丝: 28
- 资源: 47
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)