C#中的集合

本文详细介绍了C#中的集合类,包括ArrayList、List<T>、Dictionary<K,V>、LinkedList和Hashtable。解析了每种集合类的特点、应用场景及内部实现机制,对比了它们之间的异同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集合(Collection)类是专门用于数据存储和检索的类。这些类提供了对栈(stack)、队列(queue)、列表(list)和哈希表(hash table)的支持。大多数集合类实现了相同的接口。
集合(Collection)类服务于不同的目的,如为元素动态分配内存,基于索引访问列表项等等。这些类创建 Object 类的对象的集合。在 C# 中,Object 类是所有数据类型的基类
目前主要所学有一下几种

 1)ArrayList

ArrayList是List接口的可变数组非同步实现,并允许包括null在内的所有元素,相当于List < object>

类似于数组,称数组列表,ArrayList可以动态维护,可以自动扩容。

  命名空间:using System.Collections

  属性:

  count            获取ArrayList的元素个数

  方法

  Add (object  value)              添加元素

  RemoveAt(int index)       移除指定索引处元素

  Remove(object  value)        移除指定元素

  Clear()             清除所有元素

   2)List < T >

泛型的List 类是一个不限长度的集合类型,它内部实际就是一个数组,初始长度是4,每次数组到达限制,就会把现有容量翻倍,它提供用于对集合进行搜索、排序和操作等方法
List是数组链表,数组链表访问快,复杂度O(1),但是添加删除复杂度O(n)

List<T>和ArrayList()的区别:

  不同点:

  List<T>                                                                                        ArrayList()

    1:对所保存的元素进行类型的约束                                      可以增加任何类型

    2:添加/读取值类型元素的无须拆箱和装箱                             添加/读取值类型元素的需要拆箱和装箱  

  相同点:

    1:通过索引访问集合中的元素

            2:添加的元素方法相同

            3:删除元素的方法相同

   3)Dictionary < K, V>

存储键值对的关联性集合,查询等操作速度很快,因为它的时间复杂度是O(1)
,单线程中推荐使用Dictionary,有泛型优势,且读取速度较快,容量利用更充分.

   4)LinkedList
LinkedList是List接口的双向链表非同步实现,并允许包括null在内的所有元素。
底层的数据结构是基于双向链表的,
LinkedList是指针链表,指针链表访问复杂度是O(n),但是添加删除很快O(1),如果对这个集合在中间的添加删除操作非常频繁的话,就建议使用LinkedList。

   5)Hashtable

Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对.

称哈希表,通过键(key)和值(value)

  属性:

  count        Hashtable中元素个数

  Keys          Hashtable中键的集合

  Value        Hashtable中值得集合

  方法:

  Add(object Keys,object value)    添加元素

  Remove (object value)                  移除指定元素

  Clear()                                          清除所有元素

Dictionary<k,V>   和Hashtable的区别:

  不同点:

    Dictionary<k,V>                                                                    Hashtable

    1:对所保存的元素进行约束                                                 可以增加任何类型

    2:添加/读取值类型元素的无须拆箱和装箱                              添加/读取值类型元素的需要拆箱和装箱  

  相同点:

    1:通过Key获取Value

    2:添加的元素方法相同

    3:删除元素的方法相同

    4:遍历方法相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值