【C#】 SortedDictionary,查找字典中是否存在给定的关键字

欢迎来到《小5讲堂》
这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 背景
  • 场景说明
  • 红黑树原理
  • 判断代码
  • Dictionary
  • 知识点
  • 相关文章

背景

最近有小伙伴咨询C#相关基础知识点SortedDictionary,
说实在的,这个类我也很少用,从字面上理解就是一个键值对,并且是含自动排序的键值对。
如果直接查询不存在的关键词,那么会直接报错,因此本篇文章来简单讲讲关键词判断

场景说明

SortedDictionary<TKey, TValue> 是C#中的一种集合类型,它实现了IDictionary<TKey, TValue> 接口,可以存储键-值对并按键排序。
SortedDictionary基于红黑树实现,因此其插入、删除和查找操作的复杂度为O(log n),适合需要按键排序的场景。
SortedDictionary中的键必须是唯一的。
与Dictionary<TKey, TValue>不同的是,SortedDictionary会按键的比较顺序自动对键进行排序。
SortedDictionary比Dictionary有更高的查找开销,但可以提供快速的有序遍历。
可以使用SortedDictionary来存储需要按键排序的键值对,并快速查找、插入、删除和遍历它们。

红黑树原理

红黑树是一种自平衡的二叉搜索树,它在每个节点上都会增加一个额外的表示节点颜色的属性(通常为红色或黑色),并且满足以下几个性质:
1.每个节点要么是红色,要么是黑色。
2.根节点是黑色。
3.每个叶子节点(NIL节点,空节点)是黑色。
4.如果一个节点是红色的,则其子节点必须是黑色的。
5.从任一节点到其每个叶子节点的所有路径上,黑色节点的数量相同。
通过这些性质,红黑树保持了一种平衡,使得任何一条路径上的黑色节点数量差不多,从而确保了树的高度不会过高,最坏情况下的查找、插入和删除操作的时间复杂度为O(log n)。
红黑树的自平衡性质使得它在插入或删除节点时能够通过旋转和重新着色等操作来保持树的平衡。这种特性使得红黑树在需要频繁插入、删除操作的数据结构中具有很好的性能表现。

判断代码

默认情况下,若不做判断会报错

The given key ‘request_result’ was not present in the dictionary.
字典中不存在给定的关键字“request_result”。

在这里插入图片描述

SortedDictionary<string, object> dict = new SortedDictionary<string, object>();// 添加一些键值对
dict.Add("key1", "value1");
dict.Add("key2", 123);
dict.Add("key3", true);// 判断是否包含关键词
string keyword = "key2";
if (dict.ContainsKey(keyword))
{Console.WriteLine($"Found keyword {keyword}");
}
else
{Console.WriteLine($"Keyword {keyword} not found");
}

Dictionary

在C#中,可以使用Dictionary<TKey, TValue>的ContainsKey方法来查找字典中是否存在给定的关键字。
该方法接受一个键作为参数,如果字典中包含该键则返回true,否则返回false。
下面是一个示例代码:

using System;
using System.Collections.Generic;class Program
{static void Main(){Dictionary<string, int> dictionary = new Dictionary<string, int>();dictionary.Add("apple", 1);dictionary.Add("banana", 2);string keyToFind = "banana";if (dictionary.ContainsKey(keyToFind)){Console.WriteLine($"The key '{keyToFind}' exists in the dictionary.");}else{Console.WriteLine($"The key '{keyToFind}' does not exist in the dictionary.");}}
}

在上面的示例中,创建了一个Dictionary<string, int>对象,并向其中添加了两个键值对。
然后我们使用ContainsKey方法来查找是否存在给定的关键字,并输出结果。

知识点

1.二叉查找树
二叉查找树(Binary Search Tree,BST),是一种二叉树,具有一定的排序性质,对于每个节点,左子树上所有节点的值都小于该节点的值,右子树上所有节点的值都大于该节点的值。在最坏情况下,BST的高度可能会达到O(n),导致查找、插入和删除操作的时间复杂度变成O(n)。

2.AVL树
是一种自平衡的二叉搜索树,通过维护每个节点的平衡因子(左子树高度和右子树高度的差)为-1、0、1来保持树的平衡。AVL树确保了树的高度不会过高,从而保证了查找、插入和删除操作的时间复杂度为O(log n)。

3.B树和B+树
是一种多路搜索树,用于在内存和磁盘上存储大量数据。B树和B+树通过在一个节点中存储多个键值对来减少树的高度,从而减少查找的开销。B+树相比于B树更适合作为数据库索引的数据结构,因为B+树的叶子节点构成了一个有序链表,便于范围查询和范围遍历。

相关文章

【C#】 SortedDictionary,查找字典中是否存在给定的关键字

【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

【C#】约瑟夫原理举例2个代码实现

【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推

【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/12049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ICode国际青少年编程竞赛- Python-5级训练场-多参数函数

ICode国际青少年编程竞赛- Python-5级训练场-多参数函数 1、 def go(a, b):Spaceship.step(2)Dev.step(a)Spaceship.step(b)Dev.turnRight()Dev.step(b)Dev.turnLeft()Dev.step(-a) Dev.turnLeft() Dev.step(3) Dev.step(-3) go(3, 2) go(6, 1) go(5, 2) go(4, 3)2、 def go(…

高校普法|基于SSM+vue的高校普法系统的设计与实现(源码+数据库+文档)

高校普法系统 目录 基于SSM&#xff0b;vue的高校普法系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3律师功能模块 4学生功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…

RockChip Android8.1 EthernetService分析

一:概述 本篇文章将围绕RK Android8.1 SDK对Ethernet做一次框架分析,包含Framework层和APP层。 当前版本SDK默认只支持一路Ethernet,熟悉Ethernet工作流程后通过修改最终会在系统Setting以太网中呈现多路选项(可以有多种实现方式),博主通过增加ListPreference实现的效果…

[FSCTF 2023]ez_php1

一共有三小关 第一关&#xff1a;md5加密 第二关&#xff1a;反序列化 重点 单个字符串序列化 unserialize($str) "$KEY" <?php $KEY"YES I love";echo serialize($KEY); s:10:"YES I love"; 第三关&#xff1a; 反序列化 把a的地址赋给…

26版SPSS操作教程(高级教程第二十一章)

目录 前言 粉丝及官方意见说明 第二十一章一些学习笔记 第二十一章一些操作方法 信度分析 问卷信度分析 假设数据 具体操作 结果解释 下面进行进一步分析 结果解释 其他常用信度系数介绍 概化理论SPSS中的实现 结果解释 项目反应理论&#xff08;item respons…

学校为何更热衷于使用SOLIDWORKS教育版教学

在当今的教育环境中&#xff0c;SOLIDWORKS教育版因其独特的优势&#xff0c;越来越受到学校的青睐。为什么学校更热衷于使用SolidWorks教育版进行教学呢&#xff1f;本文将从以下几个方面进行阐述。 首先&#xff0c;SOLIDWORKS教育版为学生们提供了一个与实际工程应用紧密结…

一文分享:抖音外卖城市合伙人如何申请合作?

在当今数字化时代&#xff0c;外卖和团购业务蓬勃发展&#xff0c;商家们纷纷寻求在多个平台上拓宽销售渠道&#xff0c;以获取更多的订单和利润&#xff0c;这也给创业者提供创来机会。在这其中&#xff0c;抖音外卖作为一股新势力&#xff0c;自然吸引了众多创业者的目光&…

YOLO使用笔记

下载oss命令工具。 在OSS.exe文件下打开Power Shell, 输入指令&#xff1a; ./oss login之后输入用户名和密码。 选择将你想要上传的文件导入&#xff1a; ./oss cp {yourdir} oss://进入服务器实例中&#xff0c;打开终端下载数据 同样输入:oss login 进行登录。 登录成功…

[蓝桥杯]真题讲解:合并数列(双指针+贪心)

[蓝桥杯]真题讲解&#xff1a;班级活动&#xff08;贪心&#xff09; 一、视频讲解二、正解代码1、C2、python33、Java 一、视频讲解 [蓝桥杯]真题讲解&#xff1a;合并数列&#xff08;双指针贪心&#xff09; 二、正解代码 1、C #include<bits/stdc.h> #define in…

LVS超详细入门介绍

LVS 一、LVS入门介绍 1.1.LVS负载均衡简介 1.2.负载均衡的工作模式 1.2.1.地址转换NAT&#xff08;Network Address Translation&#xff09; 1.2.2.IP隧道TUN&#xff08;IP Tunneling&#xff09; 1.2.3.直接路由DR&#xff08;Direct Routing&#xff09; 1.3.…

算法课程笔记——路径相关树形DP

算法课程笔记——路径相关树形DP #include<bits/stdc.h>usingnamespacestd; usingLL longlong; constintN 2005; vector<int>e[N],t; structasdf{vector<int> vec; LL val; }; vector<asdf>w[N]; LL dp[N]; intn,m,k,dep[N]{1},f[N]; voiddfs(in…

通过GRE隧道实现OSPF、BGP、IS-IS的套接使用

正文共&#xff1a;999 字 9 图&#xff0c;预估阅读时间&#xff1a;1 分钟 书接上文&#xff08;专线入云场景能否配置动态路由协议&#xff1f;&#xff09;&#xff0c;我们发现通过一定的配置&#xff0c;具体就是组合使用IBGP和静态路由&#xff0c;在使用云专线接入到资…

国内验签DV单域名SSL证书怎么购买?

JoySSL所签发的专业版单域名SSL证书可以做到国内验签&#xff0c;数据不出境&#xff0c;安全等级为业内最高。 JoySSL 专业版国际算法DV单域名证书-JoySSLJoySSL专业版国际算法DV单域名证书通过交叉授信方式&#xff0c;实现国产根与欧美根相互验证&#xff0c;完美兼容且自主…

Xmind Pro 2024 24安装教程

Xmind 应该是目前最好用的一款思维导图软件了。拥有优秀的用户体验&#xff0c;凭借简单易用&#xff0c;功能强大的特点&#xff0c;XMind在2013年被著名互联网媒体Lifehacker评选为全球最受欢迎的思维导图软件。 Xmind 具有如下优点 ①、用心打磨16年的思维导图软件 ②、评…

[智能AI摄像头]RV1126适配3inch mipi屏幕

3寸屏幕 硬件平台 3寸屏&#xff1a;ST7701S驱动芯片&#xff0c;mipi接口&#xff0c;2lane rv1126&#xff1a;易佰纳38板、正点原子rv1126开发板 所需资料 《屏幕规格书》、《开发板原理图》、《屏幕初始化序列》、《ST7701S数据手册》《rk屏幕相关文档》 驱动板绘制 …

文件怎么转成二维码图片?长期使用的文件活码的制作方法

文件二维码是现在很常用的一种展现分享文件的方式&#xff0c;采用这种方式可以快速通过扫码的方式来查看文件内容&#xff0c;比如excel、word、ppt、pdf等文件格式都可以生成二维码之后在手机上预览内容。那么文件制作二维码的步骤是什么样的呢&#xff1f;下面就来教大家一招…

男士内裤一般什么价位?五款爆品无广测评,人气榜单推荐

不少男性朋友在选男士内裤的时候&#xff0c;都觉得品牌众多和各种不同材质&#xff0c;让大家款得眼花缭乱不知道怎么选。选择男士内裤时要综合考虑多种因素&#xff0c;才能够让舒适感和透气性大大提升&#xff0c;而且抗菌效果更好能够减少细菌滋生。 今天就给大家分享五款…

祝贺誉天杨峰老师率先通过HCIE-openEuler认证!

热烈祝贺誉天教育杨峰老师4月29日成功通过HCIE-openEuler认证&#xff01; 杨峰老师HCIE-openEuler证书 作为HCIP-openEuler全国首位通过者&#xff0c;杨峰老师凭借他深厚的专业知识、丰富的实践经验和不懈的努力&#xff0c;成功通过了华为认证的HCIE-openEuler专家级认证&a…

VB6连接各种类型的数据库

VB6连接各种类型的数据库 一、连接VFP数据库 Dim CNN As New ADODB.Connection Dim rssys As New ADODB.Recordset If CNN.state 1 Then CNN.Close CNN.ConnectionString "Driver{Microsoft Visual FoxPro Driver};SourceType.DBc;SourceDb" Trim(Text1) CNN…

代码随想录 打卡day23,24,25

1 二叉搜索树的最小绝对差 注意审题&#xff0c;题目当值说到是一个二叉搜索树&#xff0c;因此我们只需进行中序遍历即可&#xff0c;然后得到一个有序数组之后进行编辑&#xff0c;统计出来最小差。 class solution{ private:vector<int> vec;void traversal(TreeNode…