C#集合详解:从数组到ArrayList

需积分: 10 0 下载量 159 浏览量 更新于2024-09-19 收藏 64KB DOCX 举报
"C#集合总结,包括Array、ArrayList、List<T>、Hashtable、Dictionary<TKey, TValue>、Stack和Queue等核心集合类的介绍与使用,强调了集合与数组的差异,以及常用操作方法。" 在C#编程语言中,集合是一种用于存储多个对象的数据结构,它们提供了比数组更灵活的操作方式。下面我们将详细讨论C#中的主要集合类。 1. **数组**(Array) - 数组是固定大小的,一旦创建后大小无法直接改变。虽然可以通过`System.Array.Resize`方法调整大小,但实际是创建了一个新的数组并复制旧数组的内容。 - 数组元素类型在声明时就需要确定,比如`int[] intArray1`声明了一个整数类型的数组。 - 数组具有只读属性,但可以通过修改元素来改变其内容。 - 访问数组元素通常需要通过整数下标,如`intArray1[0]`获取第一个元素。 2. **ArrayList类** - ArrayList是早期.NET版本中用于动态存储对象数组的类,其大小可以自动扩展。 - 主要方法包括`Add()`(添加元素)、`Remove()`(移除元素)、`RemoveAt(int i)`(按索引移除元素)、`Reverse()`(反转元素)、`Sort()`(排序元素)和`Clone()`(克隆ArrayList)。 - ArrayList的元素类型是object,因此需要类型转换来访问具体类型的数据。 3. **List<T>类** - List<T>是.NET Framework 2.0引入的泛型集合,它提供了强类型的安全性,效率更高。 - 它包含了ArrayList的所有功能,并且增加了更多方法,如`Insert(int index, T item)`(在指定位置插入元素)和`Find(Predicate<T> match)`(根据条件查找元素)。 - 例如,可以声明一个整数列表:`List<int> intList = new List<int>();` 4. **Hashtable类** - Hashtable是一个键值对存储的集合,基于散列表实现。 - 其键必须实现`GetHashCode`和`Equals`方法,以便进行散列和比较。 - 常用方法包括`Add(object key, object value)`(添加键值对)、`Remove(object key)`(移除键值对)和`ContainsKey(object key)`(检查是否存在键)。 5. **Dictionary<TKey, TValue>类** - Dictionary是泛型字典集合,提供了更高效和安全的键值对存储。 - 键和值都是强类型的,例如`Dictionary<string, int> dict = new Dictionary<string, int>();` - 方法如`Add(TKey key, TValue value)`、`TryGetValue(TKey key, out TValue value)`(尝试获取值)和`Remove(TKey key)`。 6. **Stack和Queue类** - Stack模拟了后进先出(LIFO)的数据结构,常用方法有`Push(T item)`(压入元素)和`Pop()`(弹出顶部元素)。 - Queue则模拟了先进先出(FIFO)的数据结构,方法有`Enqueue(T item)`(入队)和`Dequeue()`(出队)。 这些集合类在不同的场景下各有优势,根据需求选择合适的类型能提高代码的效率和可维护性。在使用集合时,还需要注意线程安全问题,特别是在多线程环境下,可能需要使用`synchronized`关键字或`Concurrent`系列的线程安全集合类。