当前位置: 首页 > news >正文

C#的Dictionary类使用说明

C#的Dictionary类使用说明

  • 一:Dictionary类简单说明
  • 二:Dictionary类的构造函数
  • 三:Dictionary类的属性
  • 四:Dictionary 类的常用方法
    • 1: Dictionary<TKey,TValue>.Add(TKey, TValue)的方法介绍
    • 2: Dictionary<TKey,TValue>.Clear的方法介绍
    • 3: Dictionary<TKey,TValue>.ContainsKey(TKey) 的方法介绍
    • 4: Dictionary<TKey,TValue>.ContainsValue(TValue) 的方法介绍
    • 5: Dictionary<TKey,TValue>.Remove 的方法介绍

一:Dictionary类简单说明

1)Dictionary<TKey,TValue>泛型类提供从一组键到一组值的映射。 每次对字典的添加都包含一个值和与其关联的键。 通过使用其键检索值的速度非常快,接近 O (1) ,因为类 Dictionary<TKey,TValue> 作为哈希表实现。
2)Dictionary<TKey,TValue>的容量是可以保留的元素数。 随着元素添加,通过重新分配内部数组,容量会自动增加。

二:Dictionary类的构造函数

构造函数构造函数说明
Dictionary<TKey,TValue>()初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空且具有默认的初始容量,并使用键类型的默认相等比较器。
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>)初始化 Dictionary<TKey,TValue> 类的新实例,该实例包含从指定的 IDictionary<TKey,TValue> 中复制的元素并为键类型使用默认的相等比较器。
Dictionary<TKey,TValue>(IDictionary<TKey,TValue>, IEqualityComparer)初始化 Dictionary<TKey,TValue> 类的新实例,该实例包含从指定的 IDictionary<TKey,TValue> 中复制的元素并使用指定的 IEqualityComparer。
Dictionary<TKey,TValue>(IEqualityComparer)初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空,具有默认的初始容量并使用指定的 IEqualityComparer。
Dictionary<TKey,TValue>(Int32)初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空且具有指定的初始容量,并为键类型使用默认的相等比较器。
Dictionary<TKey,TValue>(Int32, IEqualityComparer)初始化 Dictionary<TKey,TValue> 类的新实例,该实例为空,具有指定的初始容量并使用指定的 IEqualityComparer。
Dictionary<TKey,TValue>(SerializationInfo, StreamingContext)用序列化数据初始化 Dictionary<TKey,TValue> 类的新实例。

三:Dictionary类的属性

属性属性说明
Comparer获取用于确定字典中的键是否相等的 IEqualityComparer。
Count获取包含在 Dictionary<TKey,TValue> 中的键/值对的数目
Item[TKey]获取或设置与指定的键关联的值
Keys获得一个包含 Dictionary<TKey,TValue> 中的键的集合。
Values获得一个包含 Dictionary<TKey,TValue> 中的值的集合。

四:Dictionary 类的常用方法

1: Dictionary<TKey,TValue>.Add(TKey, TValue)的方法介绍

1)作用:将指定的键和值添加到字典中。
2)语法:

public void Add (TKey key, TValue value);

3)使用举例:

//  在词典中添加一些元素。没有重复的键,但有些值是重复的。
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");

// 如果新键已在词典中,则Add方法引发异常。
try
{
    openWith.Add("txt", "winword.exe");
}
catch (ArgumentException)
{
    Console.WriteLine("键值为 = \"txt\" 的元素,已经存在.");
}

foreach (var item in openWith)
{
    Console.WriteLine(item);
}

4)运行结果:

键值为 = "txt" 的元素,已经存在.
[txt, notepad.exe]
[bmp, paint.exe]
[dib, paint.exe]
[rtf, wordpad.exe]

2: Dictionary<TKey,TValue>.Clear的方法介绍

1)作用:将所有键和值从 Dictionary<TKey,TValue> 中移除。
2)语法:

public void Clear ();

3: Dictionary<TKey,TValue>.ContainsKey(TKey) 的方法介绍

1)作用:确定是否 Dictionary<TKey,TValue> 包含指定键。
2)语法:

public bool ContainsKey (TKey key);

3)使用举例:

//统计 Wellcome to china中的每个字符出现的次数 不考虑大小写
//字符     ----- 键
//出现次数  ----- 值
string str = "Wellcome to china";
Dictionary<char, int> dic = new Dictionary<char, int>();

for (int i = 0; i < str.Length; i++)
{
    if (str[i] == ' ')
    {
        continue;//跳出单次循环,进行下一次循环
    }
    //如果dic已经包含了当前循环到这个键
    if (dic.ContainsKey(str[i]))
    {
        dic[str[i]]++;//值,再次加1
    }
    else//说明是第一次出现
    {
        dic[str[i]] = 1;
    }
}

foreach (KeyValuePair<char, int> kv in dic)
{
    Console.WriteLine("字母{0}出现了{1}次", kv.Key, kv.Value);
}

4)运行结果:

字母W出现了1次
字母e出现了2次
字母l出现了2次
字母c出现了2次
字母o出现了2次
字母m出现了1次
字母t出现了1次
字母h出现了1次
字母i出现了1次
字母n出现了1次
字母a出现了1次

4: Dictionary<TKey,TValue>.ContainsValue(TValue) 的方法介绍

1)作用:确定 Dictionary<TKey,TValue> 是否包含特定值。
2)语法:

public bool ContainsValue (TValue value);

5: Dictionary<TKey,TValue>.Remove 的方法介绍

1)作用:从 Dictionary<TKey,TValue> 中移除所指定的键的值。
2)语法:

public bool Remove (TKey key);

相关文章:

  • 【FPGA教程案例90】机器视觉1——通过FPGA实现基于颜色模型的交通灯检测,使用MATLAB辅助测试
  • winform中c#调用第三方、opencv原生dll库图像处理
  • DS1302 / DS1307 不起振可能是寄存器配置原因
  • 大数据讲课笔记1.7 软件包管理器RPM与yum
  • Python数据类型:序列(列表list、元组tuple、字符串str)
  • 解决VueCropper导致的后端接收文件后缀名为blob的问题
  • [Codeforces] number theory (R1600) Part.11
  • 基于JAVA火车订票系统计算机毕业设计源码+数据库+lw文档+系统+部署
  • 【CSDN:国庆活动】——blink动态里的学习成长
  • SpringBoot+Vue项目计算机等级考试报名系统
  • 【Flink 实战系列】Flink 消费多个 Topic 数据利用侧流输出完成分流功能
  • 【前端工程化】理解和配置process.env.NODE_ENV,项目中的环境变量到底是个啥
  • CVPR 2022 Oral 大连理工提出的SCI 快速、超强的低光照图像增强方法 亲测效果
  • cuda remove
  • CSS进阶篇——更多选择器 (selectors)
  • JS 中的深拷贝与浅拷贝
  • AngularJS指令开发(1)——参数详解
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • create-react-app项目添加less配置
  • FineReport中如何实现自动滚屏效果
  • IP路由与转发
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript服务器推送技术之 WebSocket
  • Javascript设计模式学习之Observer(观察者)模式
  • Java多线程(4):使用线程池执行定时任务
  • Just for fun——迅速写完快速排序
  • Less 日常用法
  • Linux Process Manage
  • Lucene解析 - 基本概念
  • Node项目之评分系统(二)- 数据库设计
  • socket.io+express实现聊天室的思考(三)
  • Vue UI框架库开发介绍
  • 测试如何在敏捷团队中工作?
  • 番外篇1:在Windows环境下安装JDK
  • 前端_面试
  • 浅谈Golang中select的用法
  • 软件开发学习的5大技巧,你知道吗?
  • 一个项目push到多个远程Git仓库
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 译米田引理
  • 阿里云服务器如何修改远程端口?
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​Python 3 新特性:类型注解
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (4)事件处理——(7)简单事件(Simple events)
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (接口自动化)Python3操作MySQL数据库
  • (五)c52学习之旅-静态数码管
  • (一)为什么要选择C++
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)