数据结构和算法(七)之字典结构

阅读: 评论:0

数据结构和算法(七)之字典结构

数据结构和算法(七)之字典结构

数据结构和算法(七)之字典结构

一. 认识字典

  • 生活中的字典
    • 中文字典我们可以根据拼音去查找汉字,并且找到汉字对应的词以及解释。
    • 英文字典也是类似,根据英文字母找到对应的单词,在查看其翻译和应用场景。
    • 很多编程语言中都有字典的概念。
  • 字典有什么特点呢?
    • 字典的主要特点是一一对应的关系。
    • 比如保存一个人的信息,在合适的情况下取出这些信息。
    • 使用数组的方式:[18,”Code”,1.88],可以通过下标值取出信息。
    • 使用字典的方式:{“age”:18,”name”:”code”,”heigth”:1.88}.可以通过key取出value
  • 字典的映射关系:
    • 有些编程语言中称这种映射关系为字典,因为他确实和生活中的字典比较相似。(比如SwiftDictionary,Python中的dict
    • 有些编程语言中称这种映射关系为Map,注意Map在这里不要翻译成地图,而是翻译成映射。(比如Java中就有HashMap&TreeMap等)
  • 字典和数组:
    • 字典和数组对比的话,字典可以非常方便的通过key来搜索对应的valuekey可以包含特殊含义,也更容易被人记住。
  • 字典和对象:
    • 很多编程语言(比如Java)中对字典和对象区分比较明显,对象通常是一种在编译期就确定下来的结构,不可以动态的添加或者删除属性。而字典通过会使用类似于哈希表的数据结构去实现一种可以动态的添加数据的结构。
    • 但是在JavaScript中,似乎对象本身就是一种字典。所以在早期的JavaScript中,没有字典这种数据类型,因为你完全可以使用对象去代替。
    • 但是这里我们还是按照其他语言经常使用字典方式去封装一个字典类型,方便我们按照其他语言的方式去使用字典。(虽然本质上它内部还是用了一个对象,后面学习完哈希表我会简单谈一下对象和哈希表的关系)

创建字典类

  • 我们向之前封装集合一样,封装一个字典的构造函数

    // 创建字典的构造函数
    function Dictionay(){// 字典属性this.item = {}}
    
  • 代码解析:

    • 非常简单,创建一个Dictionary的构造函数,用于我们字典的封装。
    • 在字典中,我们使用了一个items属性,该属性是一个Object对象。
    • 也就是我们的字典是基于Object封装的,这个不难理解:就像我们之前封装StackQueue是基于数组的一样。
    • 后面我们在添加字典相关的操作

二. 操作字典

常见操作

  • 字典常见操作:
    • set(key,value):向字典中添加新元素。
    • remove(key):通过用键值来从字典中移除键值对应的数据值。
    • has(key):如果某个键值处在于这个字典中,则返回true,反之则返回false
    • get(key):通过键值查找特定的数值并返回。
    • clear():将这个字典中所有元素全部删除。
    • size():返回字典所包含元素的数量。于数组的length属性类似。
    • keys():jiang字典所包含的所有键名以数组形式返回。
    • values():将字典所包含的所有数值以数组形式返回。

操作实现

  • 我们将这些方法放在一起实现

    // 创建字典的构造函数
    function Dictionay() {// 字典属性this.items = {}// 字典操作方法// 在字典中添加键值对Dictionay.prototype.has = function (key) {return this.items.hasOwnProperty(key)}// 从字典中移除元素ve = function (key) {// 1.判断字典中是否有这个keyif(!this.has(key)) return false// 2.从字典中删除keydelete this.item[key]return true}// 根据key去获取 = function (key) {return this.has(key) ? this.items[key] : undefined}// 获取所有的valueDictionay.prototype.values = function () {return Object.values(this.items)}// size方法Dictionay.prototype.size = function () {return this.keys().length}// clear方法Dictionay.prototype.clear = function () {this.items = {}}
    }
    
  • 测试

    // 创建字典对象
    let dict = new Dictionqy()// 字典中添加元素
    dict.set("age",18)
    dict.set("name","code")
    dict.set("heigth",1.88)
    dict.set("address","广州市")// 获取字典的信息
    alert(dict.keys())  // age,name,heigth,address
    alert(dict.values())  // 18,code,1.88,广州市
    alert(dict.size())  // 4
    ("name")) //code// 字典的删除方法‘
    ve("heigth")
    alert(dict.keys())  // age,name,address// 情况字典
    dict.clear()
    

本文发布于:2024-01-29 09:00:04,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170649000714164.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据结构   算法   字典   结构
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23