C#的Dictionary类使用说明

news/2024/7/3 0:45:39

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);

http://lihuaxi.xjx100.cn/news/51973.html

相关文章

自定义HorizontalScrollView嵌套HorizontalListView实现手势监听、按钮监听横向滚动功能

今日空闲花了点时间对以前自主实现的项目功能进行改进和优化&#xff0c; 其实一些界面的小功能有时候没实现过&#xff0c;也没经验类似项目功能经验&#xff0c;反而耗费的时间会更多。下面我所描述的界面功能就是我在对用RecyclerView控件不熟悉的情况下使用了HorizontalScr…

A_A03_005 STM32程序DAPLINK下载

目录 一、资料下载 二、相关链接 三、交流学习 四、常用单片机系统板 五、DAPLINK下载器 六、STM32程序DAPLINK下载 流程 七、注意事项 一、资料下载 网盘链接 戳它跳转 提取码&#xff1a;oqnj 二、相关链接 DAPLINK驱动安装 WIN10系统驱动免安装 MDK5下载与安装…

Java面试问题整理笔记-JVM基础知识

JVM1.内存区域1.1程序计数器(线程私有)1.2虚拟机栈(线程私有)1.3本地方法区(线程私有)1.4堆&#xff08;Heap-线程共享&#xff09; -运行时数据区1.4.1 逃逸机制1.5方法区/永久代&#xff08;线程共享&#xff09;2.类加载2.1加载2.2验证2.3准备2.4解析2.5初始化2.6类加载机制…

DID系列3--DID 生态系统

资料来源&#xff1a;极易被忽视的DID&#xff0c;是通往Web3的护照 - 碳链价值来自W3C的DID规范是被广泛接受的标准&#xff0c;确保身份系统可以在不同的网络和平台上互操作。下面是DID架构的概述。DID是互联网上的一个地址&#xff0c;某人可以直接拥有和控制。它可以用来寻…

Map集合

一、概述 1、Map集合是一种双列集合&#xff0c;每个元素包含两个数据 2、Map集合的每个元素格式&#xff1a;Key value 3、Map集合也被称为键值对集合 Map集合是键值对集合 Map集合非常适合做购物车这种业务场景 适应最对的Map集合时HashMap 二、Map集合体系的特点 1…

qsort函数模拟实现(利用冒泡函数实现)

文章目录1.qsort函数介绍2.模拟实现qsort函数2.1冒泡排序2.2使用回调函数&#xff0c;模拟实现qsort&#xff08;采用冒泡的方式&#xff09;3.一道排序题3.1解析1.qsort函数介绍 下面我们来看代码 int int_cmp(const void* p1, const void* p2) {return(*(int*)p1 - *(int*)p…

【数据结构与算法01】 算法的复杂度

文章目录时间复杂度的概念时间复杂度&#xff1a;常[1]、对[logn]、幂[n^2]、 指[2^n]、阶[n!]例题❗易错提醒空间复杂度&#x1f354;算法原地工作&#xff1a;算法所需的内存空间为常量例题时间复杂度的概念 例1&#xff1a;假设n3000n3000n3000 i2998,print("I love Yo…

head first java3

QA 为啥所有东西都在类中&#xff1a;Java面向对象&#xff0c;类是对象的蓝图&#xff0c;Java绝大多数都是对象 每个类都需要加一个main吗&#xff1a;一个程序中&#xff0c;一个就够 int x2;while(x) 对吗&#xff1a;错误&#xff0c;while中间是Boolean类型。boolean xtr…