‫还有上一个我们讨论过哈希表的视频｡
‫所以在这节课中, 我们讨论哈希表的一般版本是什么样的, 哈希表的一般版本是字典｡
‫我们将在这段视频中了解如何使用字典｡
‫与哈希表类似,
‫字典会存储它的值和键值对, 就像字典中的键值对一样, 也就是我们说的auto的键值对是car｡
‫所以关键词是auto, 德语中汽车的意思｡
‫然后car就是字典里的值.
‫这是一本真实的世界的词典, 比如说, 德语英语词典.
‫但是现在我们要使用编程字典｡
‫所以C-升字典, 它有一个键值对, 就像这里一样, 我们在这里存储一个特定键的值｡
‫是这样｡
‫让我们来定义一个字典｡
‫因此, 从Microsoft文档中, 字典是这样定义的｡
‫它看起来像字典的rt值｡
‫所以这基本上意味着我们需要在声明中指定键和值的类型, 就像我们做的那样, 例如,
‫对于一个列表｡
‫所以一个列表还需要有一个特定的类型｡
‫列表可以是整数类型, 也可以是字符串类型, 还可以是对象类型等等｡
‫但是我们需要定义这个列表的类型｡
‫字典也是如此, 但我们必须为键和值定义字典｡
‫这就是这个键和RT值的基本含义｡
‫这意味着我们有很大的灵活性, 但不像散列表那样灵活｡
‫所以我们可以创建一个字典, 就像这个字典, 键的类型是整型,
‫值的类型是字符串.
‫当然, 为了使用字典, 我们需要确保我们使用的系统是泛型的｡
‫所以你看字典是一个泛型集合｡
‫我们在另一个视频中看到, 泛型集合和非泛型集合之间存在差异｡
‫所以哈希表或者非泛型集合和字典都是泛型集合, 所以它们有所有的优点和缺点｡
‫现在这个字典有一个整数, 一个数字, 可以说, 还有一个字符串值.
‫所以数字是键字符串是值｡
‫现在我们创建了一个字典, 叫做my dictionary, 我们直接用一个空字典初始化它.
‫此时, 我们可以继续使用该字典, 以便向该字典添加值｡
‫例如, 我们也可以直接定义字典的值｡
‫所以在同一条线上, 基本上就在这里｡
‫所以我们可以, 比如说, 好的, 这就是字典的样子｡
‫这里有一个整数和一个字符串｡
‫所以我们这里有一个整数, 键和一个文本, 它是值｡
‫现在我们有了整数类型, 然后是口语单词, 不管这个整数是什么｡
‫所以一是一, 二是二, 三是三, 以此类推｡
‫当然, 字典并不局限于整数和字符串｡
‫我们可以使用存储的更复杂的值｡
‫举个例子, 我们来考虑这个类｡
‫所以我创建了一个名为employee的新类｡
‫我将把它放在同一个文件中, 当然, 您也可以创建一个单独的文件｡
‫因此, 我们有一些属性, 如行､ 姓名､ 年龄和每个员工的工资率｡
‫然后我们有工资, 这是一个浮动的, 它返回的利率是8倍, 5倍, 4倍, 12｡
‫所以不管利率是多少, 乘以, 这个值就是我们要存储或得到的工资｡
‫所以如果我们要检索工资, 它会直接为我们计算工资｡
‫也就是8小时乘以5天乘以4周乘以12个月｡
‫这就是它基本上计算年薪的方法｡
‫当然, 倍率｡
‫现在, 假设我们有一个员工数据库｡
‫我们走吧｡
‫我假设这是我们的员工数据库｡
‫顺便说一句, 我刚刚意识到在创建构造函数时, 我错过了这里的速率｡
‫所以这个构造函数现在也要使用这个速率, 并在这里赋值, 现在我们可以使用数据库中的数据｡
‫所以我们有一个数据库, 我们在那里得到标题, 我们得到名字, 我们得到它是什么, 年龄超级老太太,
‫95岁｡
‫然后我们有她的价格｡
‫所以她的心率是200｡
‫然后我们有经理, 乔, 他是35岁, 有一个25的比率, 等等｡
‫现在我不打算用这本字典了.
‫我将创建一个单独的字典, 称为“雇员目录”｡
‫员工目录基本上有一个字符串Employee键值对｡
‫因此, 它将为特定字符串存储整个employee对象｡
‫我将把这个目录命名为employees, 我们要使用的字符串是employees角色｡
‫好吧, 我会的
‫在这里, 我将对每个循环使用这个函数, 这些循环将遍历雇员数据库中的每个雇员｡
‫这是我的员工数据库｡
‫我是假装的, 可以这么说｡
‫对不对？
‫它将检查雇员状态数据库中的每一项,
‫并将其添加到雇员目录中的职位或角色键处, 即雇员本身｡
‫因此, 我们假设每个角色只有一名员工, 否则整个系统都会崩溃｡
‫这是一个例子, 说明了我们如何用一个假数据库中的数据创建一个字典,
‫这个数据库基本上就是我们在这里定义的一个雇员数组｡
‫那么, 如果我们想从字典中获取数据呢？
‫所以我们想从字典中获取数据, 比如说我们想获取CEO的数据｡
‫这就是首席执行官的位置｡
‫然后我们可以进入“雇员”, 我将把它命名为“苹果”, 我们从雇员目录中获取它,
‫在这里我们只需要说, 好的, 我想拥有CEO, 所以我想知道这个人,
‫也许还有这个人的整个对象, 这个人的头衔是CEO｡
‫基本上就是说, 关键字在哪里, 我的字典雇员的CEO, 坚持在那里的目录｡
‫我想知道谁是CEO, 并想将整个雇员存储在一个对象中｡
‫现在, 我可以继续使用控制台右行语句显示该员工的详细信息, 如下所示｡
‫所以我在这里说员工的名字, 这将是足够的名字, 然后角色以及工资｡
‫所以这将被显示出来｡
‫好吧, 我会的
‫所以基本上我们会根据这个比率和这个计算得到工资｡
‫它将直接从employee对象本身获取角色和名称｡
‫所以从这个苹果对象｡
‫现在让我们快速地运行一下看看女王能挣多少钱, 考虑到她是全职工作,
‫我们可以看到她的工资是384000｡
‫她叫格温, 是首席执行官｡
‫所以运行这段代码是可行的｡
‫如你所见, 这里没有问题｡
‫但问题可能是我们输入了一个错误的值｡
‫假设我搜索的不是CEO, 而是CTO, 然后是技术官, 也就是首席技术官,
‫如果我运行这个程序, 您会看到我的应用程序崩溃｡
‫所以它说CTO在字典中不存在, 所以从未给出密钥｡
‫为了解决这个问题, 我们可以检查密钥是否存在｡
‫这是一个很好的检查方法｡
‫这将是创建一个名为SEO的键或名为key的字符串, 其值为SEO｡
‫然后我们查一下员工名录｡
‫对于那个特定的键｡
‫这里你可以看到contains key是这里的favorite或favorite选项之一｡
‫所以包含着关键｡
‫然后在这里我们可以传递我们要检查的字符串作为键｡
‫那么它里面有没有一把叫做CEO的钥匙呢？
‫如果有, 则在此处运行此代码｡
‫如果没有, 就不要运行它｡
‫当然, 你也可以直接说这把钥匙不存在｡
‫现在你可以创建一个小的应用程序, 它允许你输入一个密钥, 然后你的应用程序会进行检查｡
‫好吧, 这到底存在还是不存在？
‫顺便说一句, 这里应该用钥匙代替｡
‫它不再是硬编码了｡
‫可以说, 它是在另一个点硬编码的｡
‫但是, 这可能是我们从用户输入中获得的,
‫或者用户可以从UI或类似的东西中选择它, 然后应用程序将检索数据并显示它, 而不仅仅是在实际UI中的控制台应用程序中｡
‫稍后您将了解如何使用UI或如何使用WPF构建您的眼睛｡
‫所以这是解决问题的一种方法｡
‫另一种方法是使用try get value｡
‫所以, 让我快速添加一点代码, 并检查它｡
‫假设我们有一个空的employee, 我称之为result, 它是空的,
‫因为我将其设置为null, 然后我检查employees目录.
‫如果它有一个叫做intern的值, 我就用这个方法来获取值.
‫所以这个尝试和获取值的方法会返回一个布尔值,
‫这很好, 因为这是IFF语句希望在条件中包含的, 它会打印出结果, 并将值放入result中｡
‫所以这个结果实际上是一个雇员｡
‫所以试着获取值｡
‫我们将尝试获取在这里传递的值｡
‫如果成功了, 音量将返回true｡
‫所以这条语句将被执行, 同时它将得到把结果放入这个变量的内容, 所以输出将被放入这个结果变量｡
‫因此, 我们从employees目录中检索到的值将存储在result中｡
‫这就是这句话的意思｡
‫如果成功了, 实际上, 实习生确实存在, 那么这段代码将被执行, 否则这段代码将被执行｡
‫所以这个键不存在｡
‫因此, 这将只是另一种方式来绕过同一个问题｡
‫所以试着得到值也很管用｡
‫因此, 价值检索员工的名字欧内斯特实习生22, 他得到了15,000欧元一年的工资或任何类型的钱, 你想在这里谈论｡
‫好吧, 我会的
‫现在让我们再深入一点, 因为我们也可以用at方法得到一个元素, 也就是字典中的一个元素.
‫正如我们和你们所学到的, 字典在这里要用到结构体｡
‫所以字典是键值对的集合, 它是一个结构体, 它的定义类似于键值对,
‫看起来像这样.
‫那么我们来看看今年的情况｡
‫所以我们有了键和值｡
‫这就是键值对｡
‫这就是字典所包含的内容｡
‫让我们来看看这个循环, 我可以把它放在这里｡
‫所以这个for循环, 它会使用这个元素add方法｡
‫但是, 为了使用它, 我们需要实现链接｡
‫所以现在, 就接受这个链接是一个强大的工具,
‫它允许我们以一种非常有效的方式处理集合, 我们稍后会有一个额外的章节, 我们会专门讨论链接, 但现在我们就接受它｡
‫所以一旦你到了后面的章节, 你会学到更多关于它的知识, 然后这会变得更有意义｡
‫所以在我们的情况下｡
‫在这个特殊的例子中, 我们有一个键值对, 其中key和value是where key｡
‫是我们字典的键的类型｡
‫RT值也是如此, 它是我们字典的值｡
‫在我们的例子中, 如果我们看一下, 它是字符串和雇员｡
‫所以对于我们在这里创建的字典, 它是字符串和雇员｡
‫但是在这个字符串键的后面, 还有一个整数值, 可以说是一个数字｡
‫假设零位置是首席执行官在第一位置, 经理在第二位置, 飞行员在第三位置,
‫秘书等等
‫尽管他们都将处在这样的位置上, 处在他们的关键角色上, 但在内部他们也将处在一个数量上｡
‫因此, 密钥也将是一个内部数字｡
‫这就是我们可以用来表示这个元素的｡
‫因此, 如果将鼠标悬停在该元素上, 则会返回序列中指定索引处的元素｡
‫所以字典是一个序列｡
‫它会返回雇员位置0, 雇员位置1, 振幅位置2, 依此类推｡
‫然而, 这将返回一个键值对, 我们在这里要创建的键值对的类型为string和employee｡
‫现在我们可以显示键, 然后我们可以在键值对的值位置上得到我们的雇员的值｡
‫因为我们是从元素at中得到的, 这有点复杂,
‫但基本上这只是另一种访问字典中项的方法, 不是用字符串形式的键, 而是用整数形式的键.
‫这适用于所有不同种类的钥匙｡
‫因此, 无论您使用哪种类型的密钥, 始终也会为其分配一个编号｡
‫所以即使它是off类型的对象, 或者是double类型的, 或者其他类型的,
‫总是有一个整数赋给它, 这使得我们可以在I处使用这个元素｡
‫让我们看一下, 您将看到这基本上允许我们显示所有员工｡
‫所以它会检查名单上的所有员工｡
‫所以我相信它一直延伸到这里｡
‫它显示了我们所有的员工｡
‫它甚至开始有点远｡
‫这基本上就是我们从for循环中得到的列表｡
‫所以你可以使用for循环来遍历整个字典列表｡
‫当然, 你也可以对每个循环使用A,
‫但是你也可以使用元素8 AI来访问项目, 然后你可以存储它和一个MP对象, 因为值实际上是off类型的employee, 因为这是我们在这里定义的｡
‫现在, 如果你看一下密钥, 让我们再运行一次｡
‫你可以看到这里, 吉瑞吉经理｡
‫奇赫｡ r的值｡
‫淇秘书｡
‫现在, 如果我们愿意, 我们也可以打印眼睛｡
‫所以在这里｡
‫就像这样, 特伦特｡
‫好吧, 实际上, 我们就在这里打印吧｡
‫我是, 然后我会像这样第二次进入｡
‫然后我们打印I｡
‫好吧, 我会的
‫这样就可以直接看到哪个整数值被赋给了一个特定的位置｡
‫所以首席执行官是一个零位置｡
‫经理是第一个职位, HR人员是第二个职位, 依此类推｡
‫好吧, 我会的
‫这段视频到此为止｡
‫我认为这是一个足够长的视频去字典, 至少在这一点上｡
‫在下一个视频中, 我们将了解如何更新现有字典, 如何更新字典的值,
‫以及如何从字典中删除数据｡
‫下一段视频再见｡