`
angie_hawk7
  • 浏览: 48226 次
  • 性别: Icon_minigender_1
  • 来自: 乌托邦
社区版块
存档分类
最新评论

javascript实现hashMap

阅读更多
/*
 =====================================================================
 @license MIT
 @author Daniel Kwiecinski <daniel.kwiecinski@lambder.com>
 @copyright 2009 Daniel Kwiecinski.
 @end
 =====================================================================
 */
var HashMap = function() {
  this.initialize();
}

HashMap.prototype = {
  hashkey_prefix: "<#HashMapHashkeyPerfix>",
  hashcode_field: "<#HashMapHashkeyPerfix>",

  initialize: function() {
    this.backing_hash = {};
    this.code = 0;
  },
  /*
   maps value to key returning previous assocciation
   */
  put: function(key, value) {
    var prev;
    if (key && value) {
      var hashCode = key[this.hashcode_field];
      if (hashCode) {
        prev = this.backing_hash[hashCode];
      } else {
        this.code += 1;
        hashCode = this.hashkey_prefix + this.code;
        key[this.hashcode_field] = hashCode;
      }
      this.backing_hash[hashCode] = value;
    }
    return prev;
  },
  /*
   returns value associated with given key
   */
  get: function(key) {
    var value;
    if (key) {
      var hashCode = key[this.hashcode_field];
      if (hashCode) {
        value = this.backing_hash[hashCode];
      }
    }
    return value;
  },
  /*
   deletes association by given key.
   Returns true if the assocciation existed, false otherwise
   */
  del: function(key) {
    var success = false;
    if (key) {
      var hashCode = key[this.hashcode_field];
      if (hashCode) {
        var prev = this.backing_hash[hashCode];
        this.backing_hash[hashCode] = undefined;
        if(prev !== undefined)
          success = true;
      }
    }
    return success;
  }
}

//// Usage

// creation

var my_map = new HashMap();

// insertion

var a_key = {};
var a_value = {struct: "structA"};
var b_key = {};
var b_value = {struct: "structB"};
var c_key = {};
var c_value = {struct: "structC"};

my_map.put(a_key, a_value);
my_map.put(b_key, b_value);
my_map.put("1","one");
my_map.put("1","one");
var prev_b = my_map.put(b_key, c_value);

// retrieval

if(my_map.get(a_key) !== a_value){
  throw("fail1")
}
if(my_map.get(b_key) !== c_value){
  throw("fail2")
}
if(prev_b !== b_value){
  throw("fail3")
}
// deletion

var a_existed = my_map.del(a_key);
var c_existed = my_map.del(c_key);
var a2_existed = my_map.del(a_key);

if(a_existed !== true){
  throw("fail4")
}
if(c_existed !== false){
  throw("fail5")
}
if(a2_existed !== false){
  throw("fail6")
}

分享到:
评论

相关推荐

    基于JavaScript的HashMap实现

    JavaScript本身并不直接支持HashMap,但我们可以利用对象(Object)的特性来模拟HashMap的实现。这篇博客“基于JavaScript的HashMap实现”可能详细阐述了如何通过自定义函数来创建一个高效且灵活的HashMap数据结构。...

    Javascript实现和操作HashMap

    本篇文章将深入探讨如何在JavaScript中实现HashMap以及如何进行操作。 HashMap的核心思想是通过哈希函数将键(key)映射到一个桶(bucket)中,以此实现快速存取。在JavaScript中,我们可以利用对象(object)作为...

    javascript实现的HashMap类代码

    在提供的【部分内容】中,是一个JavaScript实现HashMap类的代码示例。这段代码展示了一个简单的HashMap类,其中包含了以上提到的所有基本操作。这个类使用了JavaScript对象来模拟HashMap的存储结构,其中对象的属性...

    js 实现HashMap功能

    用js代码实现java中hashmap 的所有功能

    一个基于js的HashMap

    JavaScript原生并不支持HashMap,但开发者可以通过自定义类来实现这个功能。下面我们将详细讨论如何在JavaScript中创建一个基于js的HashMap以及它的相关知识点。 首先,HashMap的核心在于其内部实现的哈希函数,它...

    js 版 java hashmap

    在描述中提到的"js版java HashMap"可能是指一个JavaScript实现的HashMap类,它模仿了Java中的HashMap数据结构,提供了更高效和灵活的操作。Java的HashMap是一个基于哈希表的Map接口实现,提供快速的插入、删除和查找...

    HashMap类

    HashMap类在Java编程...在阅读《HashMap1.js》和《HashMap.js》这两个文件时,可以深入分析其JavaScript版本的HashMap实现,虽然与Java版本可能有所不同,但基本的哈希映射原理是相通的,有助于拓宽对哈希表的理解。

    JavaScript实现不同的计算机科学算法

    在这个“JavaScript实现不同的计算机科学算法”的项目中,我们可以通过`javascript-algorithms-master`这个压缩包来学习如何在JavaScript中实现这些算法。 1. **排序算法** - **冒泡排序**:是最简单的排序算法之...

    javascript实现自定义事件

    javascript实现自定义事件,纯javascript不含vbscript。 通过自定义的HashMap.js和EventManager.js实现自定义事件的监听addEvent和发布fireEvent

    各种javascript列表的实现

    此外,还有其他列表实现,如双端队列(Deque)、哈希表(HashMap)等,它们在特定场景下有独特优势。例如,双端队列允许在两端进行插入和删除,哈希表则提供快速的键值对查找。 在压缩包中的文件名称列表中,我们...

    js 集合类实现 (HashMap, Set, ArrayList, etc.)

    本篇文章将深入探讨JavaScript中的HashMap、Set和ArrayList等集合类的实现,并与Java中的相应概念进行对比,帮助开发者更好地理解和应用这些数据结构。 **1. HashMap** 在Java中,HashMap是一个散列映射容器,它...

    js-hashmap:javascript hasmap实现

    backbee / js-hashmap JavaScript哈希图实现##安装:bower install bb-js-hashmap --save ##特性: HashMap . length 返回HashMap对象中键/值对的数量。 HashMap . size 返回HashMap对象中键/值对的数量。 ## ...

    前端开源库-hashmap

    标题提到的“前端开源库-hashmap”是一个专门为JavaScript设计的`HashMap`实现,旨在为开发者提供一个高效且易于使用的哈希映射解决方案。这个开源库通常包含了以下功能: 1. **哈希函数**:库的核心部分是高效的...

    base64,java与JavaScript实现

    本文介绍了如何使用Java和JavaScript实现Base64编码与解码功能,特别是在Java Spring框架下的具体实现方式。通过这些代码示例,开发者可以快速地集成Base64的功能到自己的应用中,无论是前端还是后端。同时,还介绍...

    html js 用HashMap去掉html中select中的重复值

    这个方法适用于JavaScript环境,如果在服务器端使用Java处理,可以使用HashMap来实现相同的功能,只是代码会有所不同,因为Java处理DOM的操作不同于JavaScript。在Java中,你需要先解析HTML字符串,提取`&lt;select&gt;`...

    详解JavaScript中Hash Map映射结构的实现_.docx

    本文将深入探讨如何在JavaScript中实现一个简单的HashMap结构,并讨论与`Object`相关的陷阱。 首先,我们来看一个简单的HashMap实现: ```javascript var hashMap = { Set: function(key, value) { this[key] = ...

    JS hashMap实例详解

    在JavaScript中,虽然ES6引入了Map对象,但在ES6之前,开发者通常需要手动实现HashMap功能。接下来,我们将详细介绍如何在JavaScript中实现一个简单的HashMap。 ### 1. HashMap的基本概念 HashMap由键(key)和值...

    华为OD真题含JavaScript实现代码.docx

    ### 华为OD真题解析:JavaScript实现代码 #### 1. 查找众数及中位数 **问题描述:** 题目要求从一个给定的一维整型数组中找到众数,并基于这些众数计算出新的数组的中位数。 **输入格式:** 输入为一个一维整型...

    数据结构和算法在JavaScript电子书中解释和实现.zip

    1. "dsa.js":这可能是主文件,包含了用JavaScript实现的各种数据结构和算法。 2. "data-structures"目录:可能包含了各种数据结构的实现,如Array、LinkedList、Stack、Queue、HashMap、Tree等。 3. "algorithms...

Global site tag (gtag.js) - Google Analytics