C# 中的集合类是什么?
1. 什么是集合类
在 C# 编程中,集合类(Collection)是指一种对象组合体,可以用来存储一组同类型的元素,它可以把一些对象放在一起用于一些处理操作。C# 编程的集合类是一种类库,它是用 C# 写成的。
C# 集合类主要包括以下类型:数组(Array)、列表(List)、哈希表(HashTable)、字典(Dictionary)、队列(Queue)、栈(Stack)等。通过使用这些集合类型,可以简化对元素的处理和管理。
2. 数组(Array)
数组(Array)是一个以连续的内存空间存储值类型和引用类型的固定大小的有序集合。它是在编译时创建的。数组存储的是同一类型的元素,而且这些元素可以按索引访问。
定义一个数组的方式可以是:
int[] num = new int[5];
这个数组中包含 5 个 int 类型的元素。使用方括号可以访问数组的每个元素,例:
数组元素是按照索引值顺序存放的,我们可以按照索引值直接访问和使用数组中的元素。
3. 列表(List)
列表(List)也被称为动态数组。它是一个有序的集合,可以容纳不同类型的对象 (而不只是值类型对象)。可以通过索引访问列表中的每个项,列表中每个元素的类型可以不相同。
列表的定义方式可以是:
List<string> list = new List<string>();
在定义列表时,可以指定列表中存放的元素的类型。利用 Add 方法,我们向列表中添加了三个字符串:
list.Add("a");
list.Add("b");
list.Add("c");
列表可以改变大小,它可以在表尾添加一个元素,也可以在列表中的元素之间插入一个新元素。例:
list.Insert(2, "d");
4. 哈希表(HashTable)
哈希表(HashTable)是一种高效的存储/检索数据的方式。它是通过使用键(key)和值(value)来存储和检索数据的。它的读取效率很高,但是写入效率则较低。
哈希表的定义方式可以是:
Hashtable hashtable = new Hashtable();
哈希表可以用键-值对的方式进行存储,键和值都可以是任何类型:
hashtable.Add("a", 1); // 以“a”作为键,1作为值
hashtable.Add(2, "b"); // 以2作为键,"b"作为值
hashtable.Add("c", 'a'); // 以“c”作为键,'a'作为值
哈希表的元素是无序的,可以使用 foreach 循环遍历:
foreach (var key in hashtable.Keys)
{
Console.WriteLine(key + " " + hashtable[key]);
}
哈希表的容量超出之后,可以使用扩容的方法将其容量扩大。
5. 字典(Dictionary)
字典(Dictionary)是一种哈希表,与哈希表类似,它是一种高效的存储/检索数据的方式,但是它不同于哈希表,它是以泛型的形式定义的。
字典的定义方式可以是:
Dictionary<string, string> dictionary = new Dictionary<string, string>();
字典的元素也以键值对的形式存储,与哈希表不同的是,字典中的键和值都是强类型的:
dictionary.Add("apple", "苹果");
dictionary.Add("banana", "香蕉");
dictionary.Add("cherry", "樱桃");
dictionary.Add("peach", "桃子");
使用键来获取值的方式与哈希表类似:
Console.WriteLine(dictionary["apple"]); //输出: 苹果
字典的键是唯一的,如果添加相同键的数据,就会出现异常。
6. 队列(Queue)
队列(Queue)是一种数据结构,可以在队尾插入元素,在队首删除元素,它采用先进先出(FIFO)的策略进行操作。队列非常适用于一些需要按照顺序进行处理的数据。
队列的定义方式可以是:
Queue queue = new Queue();
使用 Enqueue 方法在队尾添加元素:
queue.Enqueue("a");
queue.Enqueue("b");
queue.Enqueue("c");
使用 Dequeue 方法在队首删除元素,并返回该元素:
object obj = queue.Dequeue();
队列中元素的个数可以使用 count 属性来获取。
7. 栈(Stack)
栈(Stack)同样也是一种数据结构,它可以在栈顶压入元素,在栈顶弹出元素,使用后者后,栈中下面的元素往上移动一位。栈采用后进先出(LIFO)模式。
栈的定义方式可以是:
Stack stack = new Stack();
使用 Push 方法在栈顶添加元素:
stack.Push(1);
stack.Push(2);
stack.Push(3);
使用 Pop 方法在栈顶删除元素,并返回该元素:
object obj = stack.Pop();
栈顶元素可以使用 Peek 方法来访问,它不会删除栈顶的元素。栈中元素的个数可以使用 count 属性来获取。
8. 总结
C# 中的集合类是一种非常强大的编程工具,通过使用不同的集合类型,我们可以更加高效地操作和管理元素。数组(Array)、列表(List)、哈希表(HashTable)、字典(Dictionary)、队列(Queue)、栈(Stack)等集合类型,都具有不同的特性、优点和限制,开发者可以根据实际需求来选择合适的集合类型。
C# 中的集合类是一个深入的话题,通过对集合类型的深入研究,可以使开发者的 C# 程序更加灵活而高效。