美文网首页
数据结构——字典

数据结构——字典

作者: 柏丘君 | 来源:发表于2018-02-16 22:41 被阅读0次

上篇文章介绍了集合的实现,本文介绍字典。字典和集合十分类似,集合中保存的是一系列值,而字典中保存的是键值对。字典也叫映射,在 ES6 中也有原生的支持:Map
在上篇集合的实现中,MySet 类实际上也可以看作一个字典类,因为在调用 add() 方法添加元素时,会向 dataStore 属性上添加键和值,因此也可以将其看作一个字典。
采用 JavaScript 对象为基础实现集合主要是基于集合的无序性考虑,数组是有序的,因此不适合用来实现集合。使用 JavaScript 对象实现的 MySet 类,需要保存键值,和字典有点相似。不同点在于,实现 MySet 类时,会在内部隐式的计算出一个键,而在实现字典时,需要显式的指定键,这是它们在实现上的一个区别。

字典的代码实现

下面是字典的代码实现,首先定义 IDict 接口:

interface IDict<T>{
    // 添加元素
    add(key:string,val:T):void;
    // 移除元素
    remove(key:string):T;
    // 判断是否存在
    has(key:string):boolean;
    // 根据键获取值
    get(key:string):T;
    // 清空字典
    clear():void;
    // 获取字典的长度
    size():number;
    // 获取所有的键
    keys():string[];
    // 获取所有的值
    values():T[];
}

实现接口,定义 Dict 类:

class Dict<T> implements IDict<T>{
    private dataStore:{
        [propNames:string]:T
    } = {};
    private _size:number = 0;
    add(key:string,val:T):void{
        if(!this.has(key)){
            this.dataStore[key] = val;
            this._size++;
        }
    }
    remove(key:string):T{
        const res:T = this.dataStore[key];
        delete this.dataStore[key];
        this._size--;
        return res;
    }
    has(key:string):boolean{
        return this.dataStore.hasOwnProperty(key);
    }
    get(key:string):T{
        return this.dataStore[key]
    }
    clear():void{
        this.dataStore = {};
    }
    size():number{
        return this._size;
    }
    keys():string[]{
        return Object.keys(this.dataStore);
    }
    values():T[]{
        const tmp:T[] = [];
        Object.keys(this.dataStore).forEach(v => {
            tmp.push(this.dataStore[v])
        })
        return tmp;
    }
}

完。

相关文章

  • python 02数据结构

    list数据结构 - 有序的结构体 元组 - 无法修改 字典 - 独有的key-value数据结构 字典常用操作 ...

  • 新2019计划:python学习-字典【4】

    字典 本篇章讲述数据结构字典,主要围绕如何访问字典,如何修改字典,如何删除字典某元素,如何遍历字典,字典的常见方法...

  • Python学习手册 列表和字典

    字典构造技术 关于键值 字典合并,update盲目覆盖相同键,合并不同键 字典删除 用字典存储稀疏数据结构 字典处...

  • redis底层数据组织方式

    底层数据结构 redis底层数据结构有:字典、双端链表、压缩链表、整数集合、跳跃表和字典、整数集合、embstr ...

  • Python3 字典

    ## 字典(dict) -字典属于新的数据结构,称为映射(mapping) - 字典的作用和列表类似,都是用来存储...

  • python基础5-字典

    什么是字典字典(Dictionary)是Python中的内置数据结构字典非常适合表达结构化数据 字典的特点采用键(...

  • 6字典[python基础]

    什么是字典字典(Dictionary)是Python中的内置数据结构字典非常适合表达结构化数据 字典的特点采用键(...

  • 说说 Python 的嵌套式数据结构

    嵌套式数据结构指的是:字典存储在列表中, 或者列表作为值存储在字典中。甚至还可以在字典中嵌套字典。 1 字典列表 ...

  • Golang 实现 Trie (前缀树) leetcode-20

    前缀树,字典树,经典的数据结构。

  • Python json函数与Flask jsonify函数

    JSON数据结构 要把json与字典区分开来 dumps(字典转换成Json) loads(Json转换成字典) ...

网友评论

      本文标题:数据结构——字典

      本文链接:https://www.haomeiwen.com/subject/isoptftx.html