C#中的数据字典Dictionary

db8de9f4d862d45c70d28a868b31dfe9.png

前言

今天上午和往常一样在网上冲浪,看到码甲哥微信群里面在聊一个面试题,比较有意思,这里简单分享下结论中的Dictionary字典。

有50w个int类型的数字,现在需要判断一下里面是否存在重复的数字,请简要说明下。

假如这个题目让我做,第一感觉可能直接向两个for循环,简单做个判断就解决了。可是看到几个大佬的讨论,才发现是我知识浅薄了。

这道题难道考的就是对业务代码循环的应用吗?肯定不是的。

我们知道,在验证一段代码或者一个程序算法的完美指标是空间复杂度和时间复杂度。通过这两个指标来进行评判。

空间复杂度:

是指在一个算法程序在执行过程中,单位时间内临时所占用的存储容量是多少。用S(n)=O(f(n))来表示。

时间复杂度:

是指在一个算法程序执行过程中,所需要花费的时间多少。

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数,记作T(n)=O(f(n)),称为O(f(n))为算法的时间复杂度。

比如插入排序的时间复杂度是O(n^2),空间复杂度是O(1)。

一个算法的优劣主要从算法的执行时间和所需要占用的存储空间两个方面衡量。

群里面讨论的过程中,出现有数组array,键值对,还有数据字典Dictionary(键值对的一种)。最后都觉得使用Dictionary存储这50w个int类型的数据,利用其key或者value来判断是否有重复的值。

既然看到这里了,今天咱也就简单复习下Dictionary,看看它到底有什么魅力。

Dictionary<TKey,TValue>字典

根据MSDN上的记载,说它是表示键和值的集合。提供一组键到一组值的映射。每次对字典的添加都包含一个值和与其关联的键。使用其键检索值的速度非常快,接近O(1)。

Dictionary<TKey,TValue>该类是作为哈希表实现的,检索的速度取决于为指定的类型的哈希算法的质量TKey。

其余特性简单总结如下

  • 必须包含命名空间System.Collection.Generic

  • Dictionary里面的每一个元素都是一个键值对

  • 键必须是唯一的,而值不需要唯一

  • 键和值都可以是任何类型

  • 通过一个键读取一个值的时间复杂度接近O(1),查找速度非常快,要比list等快很多

  • 键值对之间的偏序可以不定义

  • 可以实现通过键值查找、插入、删除一个键值对的操作,这些如果用数组实现非常麻烦

098c777d2f45f2394a02b7f3021dfebd.png

下面是关于Dictionary的一些CRUD操作。

定义字典添加键值取值改值遍历key遍历value删除元素清空所有元素

//定义static Dictionary<int, string> ahuiInfo = new Dictionary<int, string>();static void Main(string[] args){//添加键值ahuiInfo.Add(1,"阿辉");ahuiInfo.Add(2, "阿酶");ahuiInfo[2] = "阿一"//取值var name=ahuiInfo[0].ToString();Console.WriteLine(""+name//修改值ahuiInfo[0] = "阿姨";Console.WriteLine("" + ahuiInfo[0].ToString()//遍历key和valueforeach (var key in ahuiInfo.Keys){Console.WriteLine(""+key.ToString());foreach (var value in ahuiInfo.Values){Console.WriteLine(" "+value.ToString());//遍历字典foreach(KeyValuePair<int ,string> kvp in ahuiInfo){Console.WriteLine("key="+kvp.Key+",value="+kvp.Value);//删除元素ahuiInfo.Remove(0//判断键是否存在if (ahuiInfo.ContainsKey(0)){Console.WriteLine("true");}else{Console.WriteLine("false");}}
}

寄语

人生短暂,我不想去追求自己看不见的,我只想抓住我能看得见的。

原创不易,给个关注。

我是阿辉,感谢您的阅读,如果对你有帮助,麻烦点赞、转发  谢谢。

80e29e0b84b06f4752f8a5c41ad1d656.png

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

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

相关文章

实验 6 场景创建与执行 实验报告--软件功能测试与性能测试实验

下载链接&#xff1a; 下载链接&#xff1a; https://download.csdn.net/download/qq_44872173/20031798 内容&#xff1a;

改成中文版的_lol手游怎么改成中文版?英雄联盟手游中文版更改教程

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注&#xff01; 【免责声明】本文部分文字与图片资源来自于网络&#xff0c…

dotnet 替换 ASP.NET Core 的底层通讯为命名管道的 IPC 库

这是一个用于本机多进程进行 IPC 通讯的库&#xff0c;此库的顶层 API 是采用 ASP.NET Core 的 MVC 框架&#xff0c;其底层通讯不是传统的走网络的方式&#xff0c;而是通过 dotnetCampus.Ipc 开源项目提供的基于 NamedPipeStream 命名管道的方式进行通讯。相当于替换掉 ASP.N…

好想写点儿什么,但是不知道怎么写

自己已经上班了&#xff0c;但是有好多的时候还是做起事情没有一点毅力&#xff0c;不论是学习&#xff0c;还是追女生&#xff0c;还是想学习音乐。就像没有毕业的时候看C语言的书籍&#xff0c;看了一个星期&#xff0c;不想看了然后就不看了。书上面自己做的笔记过不了几天也…

上帝的玩偶:haXe语言

在动画片《我叫MT》中&#xff0c;有个“五火球神教”&#xff0c;五火球神教的口号是“征服世界”。在小说《风姿物语》中疯狂的白家的某代家主白拉登&#xff0c;他手中的扇子上写着“世界征服”四个大字。 疯狂&#xff01;只能用疯狂来形容。少年们&#xff0c;下面请看一群…

实验 7 场景运行监控及性能测试结果分析_实验报告--软件功能测试与性能测试实验

下载链接&#xff1a; 下载链接&#xff1a; https://download.csdn.net/download/qq_44872173/20031824 内容&#xff1a;

中yeti不能加载_将 PQ 查询加载到 Excel 中进行分析的三种常用的方式

点击上方蓝字 关注星标★不迷路岁月本长&#xff0c;忙者自促虽然大部分时候经过PQ清洗的数据都是加载到Excel工作表中&#xff0c;但是PQ中还有另外两种将数据返回Excel中进行分析的方法。三种不同的数据加载方式&#xff1a;Excel 智能表格仅限链接PowerPivot 数据模型一、加…

SQLite3.8.4.2在Windows平台下的编译和使用

2019独角兽企业重金招聘Python工程师标准>>> SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The …

【招聘(北京武汉)】北京高远华信科技 .NET 高级工程师

职位名称&#xff1a;.NET Core 高级工程师培养方向&#xff1a;架构师、技术总监月薪&#xff1a;15k-20k工作地点&#xff1a;北京、武汉职位信息1、理解后端架构&#xff0c;与后端工程师配合&#xff0c;为项目提供最优化的.NET Core技术解决方案&#xff1b;2、根据项目要…

通过邮箱远程控制电脑

转自本人在知乎上面的答案印如意Fitz 通过往邮箱发送邮件&#xff0c;从而达到控制电脑or开始抓取数据or播放音乐等系列操作。 like that: 先用我的常用邮箱给我备胎邮箱发送一封主题为“shutdown”的邮件 然后我要关机的电脑检测到了自动关机并发挥一封主题为“already shutdo…

上海纳税百强2016,邢台2017纳税百强,深圳百强企业

上海纳税百强企业名单公布。市税务部门组织的税收收入达到11847.0亿元&#xff0c;同比增长5.5%&#xff0c;增收616.6亿元&#xff1b;剔除证券交易印花税后&#xff0c;税收收入完成11380.6亿元&#xff0c;同比增长15.1%&#xff0c;其中&#xff0c;第三产业税收收入完成81…

Oracle DBA

实验7 Oracle数据库安全管理 1&#xff0e;实验目的 &#xff08;1&#xff09;掌握Oracle数据库安全控制的实现。 &#xff08;2&#xff09;掌握Oracle数据库用户管理。 &#xff08;3&#xff09;掌握Oracle数据库权限管理。 &#xff08;4&#xff09;掌握Oracle数据…

c++ 对象起始地址 指针靠齐_你需要知道的各种指针运算

数组的某个成员可以用数组的基地址加上一个偏移量来表示。我们可以声明一个指针double *p;&#xff0c;把它作为基地址&#xff0c;然后就可以像数组一样在这个基地址上使用偏移量。在基地址上&#xff0c;我们可以找到第1个成员p[0]的内容&#xff0c;在基地址上前进一步可以找…

2014,成为更好程序员的7个方法

2019独角兽企业重金招聘Python工程师标准>>> // 译注&#xff1a;英文原文发布今年年初&#xff0c;所以开头提到了”新年“&#xff0c;请不要惊讶~ 程序员总是有很多的决定&#xff0c;不是吗&#xff1f;如果你的新年待办事项还是空白的话&#xff0c;那么可以考…

.NET6之MiniAPI(十五):跨域CORS(下)

前一篇的跨域请求的方式是松宽的方式&#xff0c;毕竟跨域有安全风险&#xff0c;应尽量少的允许访问必要资源&#xff0c;本篇分别从请求方法&#xff0c;请求头和请求凭据方面了解跨域设置。请求方法&#xff1a;api项目&#xff0c;get&#xff0c;post是默认访问&#xff0…

游戏上线... 记录下...

转载于:https://www.cnblogs.com/porter/p/6339792.html

Beetlex服务网关1.8发布

在新的版本中网关添加了不少功能&#xff0c;分别有流量控制包括&#xff1a;会话、IP、域名和Url等流量控制配置&#xff1b;在插件上添加了Redis读取和ElasticSearch文档搜索功能。流量控制在新版本中网关添加了流量控制功能&#xff0c;通过这一功能可以控制会话、IP、域名和…

HDU 3487 Play with Chain | Splay

Play with Chain Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) 【Problem Description】YaoYao is fond of playing his chains. He has a chain containing n diamonds on it. Diamonds are numbered from 1 to n. At first, the d…

WIN32程序结构

windows程序基于消息驱动系统&#xff0c;用户的所有行为和事件都被windows转成消息。windows内部对消息的处理:消息生命周期:1.消息产生:windows监控所有具体输入事件硬件设备。当系统收到设备输入事件时。windows将对应事件转成消息。2.消息投递:每个消息都有一个目标窗体接收…

zsh

2019独角兽企业重金招聘Python工程师标准>>> 1. MAC安装zsh后,部分bash 指令失效conda, list, pip, list失效&#xff0c;怎么解决&#xff1f; step1&#xff1a;vim ~/.bash_profile 记录Anaconda的路径地址: export PATH"/Users/XXX/anaconda/bin:$PAT…