当前位置:网站首页>C#精挑整理知识要点9 集合2(建议收藏)
C#精挑整理知识要点9 集合2(建议收藏)
2022-07-25 15:23:00 【꧁小ۣۖิ鸽ۣۖิ子ۣۖิ꧂】
4.堆栈
Stack (栈)是常见的数据结构之一,栈是一种先进后出的结构,即元素从栈的尾部插入,从栈的尾部移除,类似于日常生活中搬家的时候装车,先装上车的东西要后拿下来。
集合中的 Stack 类模拟了栈操作,提供了栈中常用的属性和方法。
Stack 类提供了 3 种构造方法,如下表所示:
| 构造方法 | 作用 |
|---|---|
| Stack() | 使用初始容量创建Stack的对象 |
| Stack(ICollection col) | 创建 Stack 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数、增长因子相同 |
| Stack(int capacity) | 创建 Stack 的实例,并设置其初始容量 |
Stack 类中的常用属性和方法如下表所示:
| 属性或方法 | 作用 |
|---|---|
| Push(object obj) | 向栈中添加元素,也称入栈 |
| object Peek() | 用于获取栈顶元素的值,但不移除栈顶元素的值 |
| object Pop() | 用于移除栈顶元素的值,并移除栈顶元素 |
| Clear() | 从 Stack 中移除所有的元素 |
| Contains(object obj) | 判断某个元素是否在 Stack 中 |
| object[] ToArray() | 复制 Stack 到一个新的数组中 |
例:
class Program
{
static void Main(string[] args)
{
//模拟餐馆盘子的存取。
Stack stack = new Stack();
//向栈中存放元素
stack.Push("1号盘子");
stack.Push("2号盘子");
stack.Push("3号盘子");
stack.Push("4号盘子");
stack.Push("5号盘子");
Console.WriteLine("取出盘子:");
//判断栈中是否有元素
while(stack.Count != 0)
{
//取出栈中的元素
Console.WriteLine(stack.Pop());
}
}
}
5.哈希表(散列表)
Hashtable 类实现了 IDictionary 接口,集合中的值都是以键值对的形式存取的。元素顺序根据key的hash值进行排列。
C# 中的 Hashtable 称为哈希表,也称为散列表,在该集合中使用键值对(key/value)的形式存放值。
此外,还提供了根据集合中元素的 key 值查找其对应的 value 值的方法。
Hashtable 类提供的构造方法有很多,最常用的是不含参数的构造方法,即通过如下代码来实例化 Hashtable 类。
Hashtable 对象名 = new Hashtable();
Hashtable 类中常用的属性和方法如下表所示:
| 属性或方法 | 作用 |
|---|---|
| Count | 集合中存放的元素的实际个数 |
| void Add(object key,object value) | 向集合中添加元素 |
| void Remove(object key) | 根据指定的 key 值移除对应的集合元素 |
| void Clear() | 清空集合 |
| ContainsKey (object key) | 判断集合中是否包含指定 key 值的元素 |
| ContainsValue(object value) | 判断集合中是否包含指定 value 值的元素 |
例:
class Program
{
static void Main(string[] args)
{
Hashtable ht = new Hashtable();
ht.Add(1,"计算机基础");
ht.Add(2,"C#高级编程");
ht.Add(3,"数据库应用");
Console.WriteLine("请输入图书编号");
int id = int.Parse(Console.ReadLine());
bool flag = ht.ContainsKey(id);
if(flag)
{
Console.WriteLine("您查找的图书名称为:{0}",ht[id].ToString());
}
else{
Console.WriteLine("您查找的图书编号不存在!");
}
Console.WriteLine("所有的图书信息如下:");
foreach(DictionaryEntry d in ht)
{
int key = (int)d,key;
string value = d.Value.ToString();
Console.WriteLine("图书编号:{0},图书名称:{1}",key.value);
}
}
}
6.有序列表
SortedList 类实现了 IDictionary 接口 ,集合中的值都是以键值对的形式存取的。C# SortedList 称为有序列表,按照 key 值对集合中的元素排序。
SortedList 类中常用的属性和方法如下表所示:
| 属性或方法 | 作用 |
|---|---|
| Count | 集合中存放的元素的实际个数 |
| void Add(object key,object value) | 向集合中添加元素 |
| void Remove(object key) | 根据指定的 key 值移除对应的集合元素 |
| void Clear() | 清空集合 |
| ContainsKey (object key) | 判断集合中是否包含指定 key 值的元素 |
| ContainsValue(object value) | 判断集合中是否包含指定 value 值的元素 |
例:
class Program
{
static void Main(string[] args)
{
SortedList st = new SortedList();
st.Add(1,"小曾");
st.Add(2,"小嘉");
st.Add(3,"小怡");
Console.WriteLine("请输入挂号编号");
int id = int.Parse(Console.ReadLine());
bool flag = st.ContainsKey(id);
if(flag)
{
string name = st[id].ToString();
Console.WriteLine("您查找的患者姓名为:{0}",);
}
else{
Console.WriteLine("您查找的挂号编号不存在!");
}
Console.WriteLine("所有的患者信息如下:");
foreach(DictionaryEntry d in st)
{
int key = (int)d,key;
string value = d.Value.ToString();
Console.WriteLine("挂号编号:{0},姓名:{1}",key.value);
}
}
}
边栏推荐
- Application of object detection based on OpenCV and yolov3
- ML - natural language processing - Key Technologies
- Spark获取DataFrame中列的方式--col,$,column,apply
- JVM garbage collector details
- How to finally generate a file from saveastextfile in spark
- 记一次Spark foreachPartition导致OOM
- Submarine cable detector tss350 (I)
- Spark SQL common time functions
- Single or multiple human posture estimation using openpose
- 获取键盘按下的键位对应ask码
猜你喜欢

ML - 语音 - 传统语音模型

ML - 自然语言处理 - 关键技术

NPM's nexus private server e401 E500 error handling record

解决DBeaver SQL Client 连接phoenix查询超时

Distributed principle - what is a distributed system

Debounce and throttle

MySQL installation and configuration super detailed tutorial and simple database and table building method

Single or multiple human posture estimation using openpose

Application of C language array in Sanzi chess -- prototype of Queen n problem

ML - natural language processing - Key Technologies
随机推荐
记一次Spark报错:Failed to allocate a page (67108864 bytes), try again.
理解“平均负载”
Sublimetext-win10 cursor following problem
PageHelper does not take effect, and SQL does not automatically add limit
Ml speech depth neural network model
Endnote 无法编辑range 解决
ML - 语音 - 语音处理介绍
我的创作纪念日
Spark SQL空值Null,NaN判断和处理
延迟加载源码剖析:
谷歌云盘如何关联Google Colab
Notes on inputview and inputaccessoryview of uitextfield
Implementation of asynchronous FIFO
Spark 内存管理机制 新版
What is the Internet of things
Debounce and throttle
伤透脑筋的CPU 上下文切换
How to finally generate a file from saveastextfile in spark
你准备好脱离“内卷化怪圈”了吗?
How spark gets columns in dataframe --column, $, column, apply