首页 > 编程语言 >12_C#中的五大集合类

12_C#中的五大集合类

时间:2024-03-03 23:14:29浏览次数:28  
标签:12 Console C# 元素 numbers WriteLine 集合 names

C# 中五大集合类及其使用示例

C# 中提供了五种常用的集合类:

主要内容:

  • List:可变大小的列表,可以存储任何类型的元素。
  • Dictionary<TKey, TValue>:键值对集合,可以根据键快速查找值。
  • HashSet:不包含重复元素的哈希集合。
  • Stack:后进先出 (LIFO) 的堆栈。
  • Queue:先进先出 (FIFO) 的队列。

其他集合类:

  • LinkedList:双向链表,可以高效地插入和删除元素。
  • SortedList<TKey, TValue>:已排序的键值对集合。
  • SortedSet:已排序的哈希集合。
  • ReadOnlyCollection:只读集合。
  • ObservableCollection:可观察的集合,可以监视集合的变化。

1. List:可变大小的强类型列表,可以存储任何类型的元素。

// 创建一个 List<int> 集合
List<int> numbers = new List<int>();
// 添加元素
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
// 遍历集合
foreach (int number in numbers)
{
    Console.WriteLine(number);
}
// 访问特定元素
Console.WriteLine(numbers[1]); // 输出:2
// 删除元素
numbers.RemoveAt(1);
// 获取元素数量
Console.WriteLine(numbers.Count); // 输出:2

2. Dictionary<TKey, TValue>:键值对集合,可以根据键快速查找值。

// 创建一个 Dictionary<string, int> 集合
Dictionary<string, int> ages = new Dictionary<string, int>();
// 添加元素
ages.Add("John", 20);
ages.Add("Mary", 25);
// 查找值
Console.WriteLine(ages["John"]); // 输出:20
// 检查键是否存在
Console.WriteLine(ages.ContainsKey("John")); // 输出:True
// 遍历集合
foreach (KeyValuePair<string, int> pair in ages)
{
    Console.WriteLine($"{pair.Key} - {pair.Value}");
}
// 删除元素
ages.Remove("John");
// 获取元素数量
Console.WriteLine(ages.Count); // 输出:1

3. HashSet:不包含重复元素的哈希集合。

// 创建一个 HashSet<string> 集合
HashSet<string> names = new HashSet<string>();
// 添加元素
names.Add("John");
names.Add("Mary");
names.Add("John"); // 重复元素不会被添加
// 检查元素是否存在
Console.WriteLine(names.Contains("John")); // 输出:True
// 遍历集合
foreach (string name in names)
{
    Console.WriteLine(name);
}
// 获取元素数量
Console.WriteLine(names.Count); // 输出:2

4. Stack:后进先出 (LIFO) 的堆栈。

// 创建一个 Stack<int> 集合
Stack<int> numbers = new Stack<int>();
// 添加元素
numbers.Push(1);
numbers.Push(2);
numbers.Push(3);
// 移除元素
int top = numbers.Pop(); // 3
Console.WriteLine(top);
// 查看栈顶元素
Console.WriteLine(numbers.Peek()); // 2
// 检查栈是否为空
Console.WriteLine(numbers.Count == 0); // 输出:False

5. Queue:先进先出 (FIFO) 的队列。

// 创建一个 Queue<string> 集合
Queue<string> names = new Queue<string>();
// 添加元素
names.Enqueue("John");
names.Enqueue("Mary");
names.Enqueue("David");
// 移除元素
string name = names.Dequeue(); // John
Console.WriteLine(name);
// 查看队列首部元素
Console.WriteLine(names.Peek()); // Mary
// 检查队列是否为空
Console.WriteLine(names.Count == 0); // 输出:False

标签:12,Console,C#,元素,numbers,WriteLine,集合,names
From: https://www.cnblogs.com/cookie2030/p/18050964

相关文章

  • 10_C# 中的 String 和 StringBuilder 的区别
    C#中的String和StringBuilder的区别1.String类String类表示不可变的字符串。一旦创建String对象,其内容就不能再被修改。对String对象进行任何修改操作都会返回一个新的String对象。示例:stringstr1="Hello";stringstr2=str1+"World!";Console.W......
  • 9_dynamic动态类型与object类型的区别
    C#中dynamic动态类型与object类型的区别1.object类型object类型是.NET中System.Object类的别名。在C#中,所有类型(预定义、用户定义、引用类型、值类型)都直接或间接继承自Object。因此,我们可以将任何类型的值用object对象来接收。2.dynamic动态类型动态......
  • 8_C#如何判断变量类型
    C#中判断变量类型的两种方法1.GetType()方法GetType()方法用于获取当前实例的准确运行时类型。该方法返回一个Type对象,该对象包含有关该类型的信息,例如类型名称、成员、属性等。示例:publicclassPerson{publicstringName{get;set;}}publicclas......
  • 7_C# 中的装箱和拆箱
    C#中的装箱和拆箱1.什么是装箱和拆箱?装箱:将值类型转换为引用类型的过程。拆箱:将引用类型转换为值类型的过程。2.装箱和拆箱的作用C#中值类型和引用类型的最终基类都是Object类型(它本身是一个引用类型)。通过装箱和拆箱,可以将值类型当做引用类型来处理,从而将值类型与......
  • C++编译过程
     第一步:.cpp→.i第二步:.i→.s  是汇编文件第三步:.s→.o 此时已经算是目标文件的最终形态了,完整后缀是.obj第四步:通过链接器将用的到的库,如.dll和.o文件连接起来,执行.exe就是相当于执行前面连接起来的这堆文件 详细过程和G++调用参考:https://zhuanlan.zhihu.c......
  • C++ map用法总结(整理)
    (转载补充)原文链接:https://blog.csdn.net/sevenjoin/article/details/819438641,map简介map是STL的一个关联容器,它提供一对一的hash。第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value);map以模板(泛型)方式实现,可以存储任意类型的数......
  • buffer 和 cache 的含义
    看到write-buffer和read-cache瞬间懂了 简单说,Buffer的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,日子过得爽了。极大缓......
  • C语言基础-2、循环
    一、while语法反复多次的做,反复多次的判断if做一次并做一次判断while循环:当条件满足时,不断地重复循环体内语句ex1:#include<stdio.h>intmain(){ while(条件成立时) { //执行语句 } return0;}二、do-while语法先做循环体语句,再去判断循环语句ex1:*#includ......
  • P2946 [USACO09MAR] Cow Frisbee Team S
    原题链接题解设\(sum\)为总能力则若\(sum\)是\(F\)的倍数\(\to\)\(sum\mod\F=0\)根据加法求模的特性,我们可以设\(dp[i][j]\)为加上第\(i\)个元素后,模为\(j\)的方案数转移方程移得注意一个细节:按照遍历顺序,每个元素要么不是一套方案的第一个元素,要么是所......
  • ConcurrentSkipListMap
    为了引出ConcurrentSkipListMap,先带着大家简单理解一下跳表。对于一个单链表,即使链表是有序的,如果我们想要在其中查找某个数据,也只能从头到尾遍历链表,这样效率自然就会很低,跳表就不一样了。跳表是一种可以用来快速查找的数据结构,有点类似于平衡树。它们都可以对元素进行快速的查......