字典是一类特殊的数据元素的集合,字典的基本单元为数对,所谓数对是指类似(key,value)形式的数据。每一个数对结构包括了关键字key与该元素对应的value值,在一个普通字典所组成的数对集合中,关键字是不相等的,多重字典允许数对具有相同关键字。字典可以使用基本数据结构数组顺序表与链表进行设计与实现。对与使用数组形式实现字典可直接借助javascript提供的数组key=>value,定义字典数据存储结构。除此之外也可以通过链表形式实现字典的定义与数据存储。常用数组与链表实现字典示意如下图所示:

数组字典类型1

数组字典类型2

链表字典类型

字典结构的数组存储与链式存储示意如上图所示,在明确字典的数据存储形式之后可以进一步定义字典的相关数据操作,字典的操作主要包括字典长度的获取,字典插入操作、字典删除操作等。综上所述,字典抽象数据类型描述如下图所示:

字典抽象数据类型

字典抽象数据类型描述如上图所示,本例主要结合编程所使用的JavaScript选择语言所提供的基本类型进行字典数据结构的编程实现。JavaScript本身提供的Map对象就是字典类型数据结构,因此我们可以以该结构为基础进行字典类的编程实现。使用JavaScript语言Map类实现抽象数据结构字典所定义的方法说明如下:

1、empty()

该函数主要用于实现判断字典是否为空。 Map对象提供了size属性主要用于对MAP对象长度进行判断。当size为0表明字典为空。

2、size()

该函数主要用于实现计算字典长度 。直接返回map.size属性值作为字典的长度。

3、find(key)

该函数主要用于实现返回关键字为key的数对 。使用map.has(key)对key进行判断,如果存在则通过get方法获取value,并返回key与value对应的数对。

4、insert(p)

该函数主要用于实现向字典中插入p数对 。直接调用map.set(key,value)插入数对。

5、erase(key)

该函数主要用于实现删除key键对应的数对 。直接调用map.delete(key)从map中删除元素。

6、has(p):

该函数主要用于实现判断字典中是否存在p数对,存在返回true,否则返回false。使用map.has()进行判断。如果存在key则进一步判断对应的值是否与参数提供的值相等。

7、clear()

该函数主要用于实现清除字典数组 。使用map.clear()删除元素。

以上给出在JavaScript下自定义字典类的基本方法描述,由此可见借助Map对象可以非常方便实现字典类的定义与编写。甚至在实际使用过程中直接使用Map表示字典。字典类实现过程中需要使用到一个结构为数对。因此我们首先定了字典数对类,该类描述如下:

数对类

以所定义的数对为基础,结合Map实例化对象的使用我们可以进一步完成字典类的定义,字典类的定义描述如下:

字典类设计

字典类定义如上图所示,类提供构造函数用于实现在类实例化过程中完成Map对象的实例化。该类主要方法描述如下图:

empty函数

find函数

clear与has函数

insert与erase函数


本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。期待大家关注!如需案例完整代码请关注并私信,往期数据结构文章链接如下:

数据结构-JavaScript线性表的数组描述与实现

数据结构-JavaScript链表的设计与实现

数据结构-JS优先队列实现及排序应用

数据结构-使用JavaScript编程实现队列(Queue)

javascript map 排序_数据结构-JavaScript字典结构的编程实现相关推荐

  1. c++矩阵类_数据结构-JavaScript矩阵类的设计与实现

    矩阵是线性代数课学习的重点内容之一,也是线性代数常见工具之一,在应用数学.统计分析.计算机科学.计算机图像处理级物理等多学科中均有应用.矩阵主要是指数据的行列排列的形式,由行row与列col所组成,在 ...

  2. javascript 高级程序设计_所以 JavaScript 到底是什么?我居然懵了????

    前言 引用<JavaScript 高级程序设计第四版>中说的话 --"从简单的输入验证脚本到强大的编程语言,JavaScript 的崛起没有任何人预测到.它很简单,学会用只要几分 ...

  3. javascript中对象_了解JavaScript中的承诺

    javascript中对象 我向您承诺,到本文结束时,您将更好地了解JavaScript. 我与JavaScript有一种"爱与恨"的关系. 但是尽管如此,JavaScript一直 ...

  4. python字典的存储结构_解决python字典结构内存暴涨问题

    背景:当读取一个key value数据的时候,python的字典结构会造成内存使用扩10倍左右,无可容忍.此文解决这个问题 数据:word2vec训练的结果,word对应400维的词向量.词表共1.6 ...

  5. javascript单引号_避免JavaScript单文化

    javascript单引号 本文由Tom Greco , Dan Prince和Mallory van Achterberg进行了同行评审. 感谢所有SitePoint的同行评审员使SitePoint ...

  6. javascript map 排序_1Keys仅用1 kb的JavaScript制作钢琴

    传说中的JavaScript竞赛JS1k已经结束,但是它以JS1024的形式从灰烬中崛起!这种制作微型JavaScript程序的竞赛已经进行了10年,现在将以新名称继续进行.感谢组织者和其他参与者,您 ...

  7. javascript排序_使用JavaScript对页面内容进行排序

    javascript排序 Some of my layout articles, especially those that show items arranged with flexbox or C ...

  8. js map 排序_数组方法写给女友的一系列 JS 数组操作(建议收藏 | 内附思维导图)...

    前言 最近和女友,咳咳...(说出来可能会被打s)学习JS数组方法,用几个字形容的话就是听说过,实际使用.遇到的时候就分不清具体方法会得到怎样的结果. 今天我将通过这篇文章好好整理一下关于JS数组的方 ...

  9. 使用qsort对不连续的内存数据排序_数据结构教程_v20201121

    数据结构入门 1.    什么是数据结构 2.    数据结构有哪些,常用数据结构详解 3.    数据的逻辑结构和存储结构(物理结构)详解 4.    数据结构和算法的关系和区别 5.    数据结 ...

最新文章

  1. UESTC 1726 整数划分(母函数)
  2. dependencyManagement与dependencies区别
  3. ExtJS学习:MVC模式案例(三)
  4. 基于Windows Socket 的网络通信中的心跳机制原理
  5. 到底是什么程序和功能?
  6. 知其所以然~redis的原子性
  7. Centos7.6环境Docker安装Oracle19c企业版
  8. opencms mysql_OpenCms for MySql安装图解
  9. 如何使用以下命令 ls cat mv touch 以及如何使用 explainshell.com 这个网站
  10. MySQL主从同步(四)——M-M架构配置实战
  11. Gym - 101190D Delight for a Cat
  12. 3DS MAX 批量导出文件脚本 MAXScript 带界面
  13. Iphone手机,调用微信支付JSAPI缺少参数 timeStamp
  14. 轻量级Qt键盘-介绍篇
  15. LRC 文件格式定义
  16. qt中去除首尾空格的操作simplified()和trimmed()的对比操作
  17. RPG游戏制作-03-人物行走及A*寻路算法
  18. 树莓派3b GPIO编号
  19. 进一步的飞鸽传书官方网站消息
  20. VIM如何将全部内容复制并粘贴到外部

热门文章

  1. linux history 看更多历史记录_Linux历史记录history常用技巧
  2. micopython 18b20_micropython typboaed v202连接DS18B20测温小实验
  3. 怎么彻底重装清空电脑_笔记本电脑怎么重装系统Win7?20分钟完成系统重装,有可能吗?...
  4. Qt for Android 自定义启动页(解决启动页拉伸的问题)
  5. 信号处理中数字频率和模拟频率简明讲解
  6. 测度论相关概念(吐)
  7. git 使用_git使用指南
  8. oracle group by用法_从OceanBase TPCC测试报告看ORACLE兼容性进展
  9. matlab gpu deep learning_在Matlab中使用tensorflow (1)
  10. 使用Buildroot为Nxp i.mx6ul制作文件系统