hashmap

授权协议 MIT License
开发语言 JavaScript
所属分类 Web应用开发、 常用JavaScript包
软件类型 开源软件
地区 不详
投 递 者 公西岳
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

HashMap Class for JavaScript

Installation

Using npm:

$ npm install hashmap

Using bower:

$ bower install hashmap

You can download the last stable version from the releases page.

If you like risk, you can download the latest master version, it's usually stable.

To run the tests:

$ npm test

Description

This project provides a HashMap class that works both on Node.js and the browser.HashMap instances store key/value pairs allowing keys of any type.

Unlike regular objects, keys will not be stringified. For example numbers and strings won't be mixed, you can pass Date's, RegExp's, DOM Elements, anything! (even null and undefined)

HashMap constructor overloads

  • new HashMap() creates an empty hashmap
  • new HashMap(map:HashMap) creates a hashmap with the key-value pairs of map
  • new HashMap(arr:Array) creates a hashmap from the 2D key-value array arr, e.g. [['key1','val1'], ['key2','val2']]
  • new HashMap(key:*, value:*, key2:*, value2:*, ...) creates a hashmap with several key-value pairs

HashMap methods

  • get(key:*) : * returns the value stored for that key.
  • set(key:*, value:*) : HashMap stores a key-value pair
  • multi(key:*, value:*, key2:*, value2:*, ...) : HashMap stores several key-value pairs
  • copy(other:HashMap) : HashMap copies all key-value pairs from other to this instance
  • has(key:*) : Boolean returns whether a key is set on the hashmap
  • search(value:*) : * returns key under which given value is stored (null if not found)
  • delete(key:*) : HashMap deletes a key-value pair by key
  • remove(key:*) : HashMap Alias for delete(key:*) (deprecated)
  • type(key:*) : String returns the data type of the provided key (used internally)
  • keys() : Array<*> returns an array with all the registered keys
  • values() : Array<*> returns an array with all the values
  • entries() : Array<[*,*]> returns an array with [key,value] pairs
  • size : Number the amount of key-value pairs
  • count() : Number returns the amount of key-value pairs (deprecated)
  • clear() : HashMap deletes all the key-value pairs on the hashmap
  • clone() : HashMap creates a new hashmap with all the key-value pairs of the original
  • hash(key:*) : String returns the stringified version of a key (used internally)
  • forEach(function(value, key)) : HashMap iterates the pairs and calls the function for each one

Method chaining

All methods that don't return something, will return the HashMap instance to enable chaining.

Examples

Assume this for all examples below

var map = new HashMap();

If you're using this within Node, you first need to import the class

var HashMap = require('hashmap');

Basic use case

map.set("some_key", "some value");
map.get("some_key"); // --> "some value"

Map size / number of elements

var map = new HashMap();
map.set("key1", "val1");
map.set("key2", "val2");
map.size; // -> 2

Deleting key-value pairs

map.set("some_key", "some value");
map.delete("some_key");
map.get("some_key"); // --> undefined

No stringification

map.set("1", "string one");
map.set(1, "number one");
map.get("1"); // --> "string one"

A regular Object used as a map would yield "number one"

Objects as keys

var key = {};
var key2 = {};
map.set(key, 123);
map.set(key2, 321);
map.get(key); // --> 123

A regular Object used as a map would yield 321

Iterating

map.set(1, "test 1");
map.set(2, "test 2");
map.set(3, "test 3");

map.forEach(function(value, key) {
    console.log(key + " : " + value);
});
// ES6 Iterators version
for (const pair of map) {
    console.log(`${pair.key} : ${pair.value}`)
}

Method chaining

map
  .set(1, "test 1")
  .set(2, "test 2")
  .set(3, "test 3")
  .forEach(function(value, key) {
      console.log(key + " : " + value);
  });

LICENSE

The MIT License (MIT)

Copyright (c) 2012 Ariel Flesler

Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software isfurnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,OUT OF

To-Do

  • (?) Allow extending the hashing function in a AOP way or by passing a service
  • Make tests work on the browser
 相关资料
  • 问题内容: 我正在用Java写一个简单的编辑文本。当用户打开文件时,将在中打开文件。我执行以下操作来保存打开的文件: 将从何处接收值,例如:。 我有一堂课: 现在,在此类中,我需要获取存储在中的值。我怎样才能做到这一点? 问题答案: 要从地图获取所有值: 要从地图中获取所有条目,请执行以下操作: Java 8更新: 处理所有值: 要处理所有条目:

  • 问题内容: 我是泛型新手,所以不确定我的问题的答案是否是真的。在下面的代码中,对一个对象条目的键进行大小写需要什么? 它似乎很容易被替换 更多参考: 问题答案: 这是一种极端的优化措施,对于通用编程实践来说可能不是必需的。这是一个可以回答您问题的讨论。下面的语句是从该帖子中复制的: 这是Doug Lea流行的一种编码风格。这是一个极端的优化,可能没有必要。您可以期望JIT进行相同的优化。(您可以尝

  • 问题内容: 我可以想到以下几个原因,为什么带有整数键的s 比s 要好得多: 的Android文档说:“通常比传统的要慢”。 如果您使用s而不是s 编写代码,那么您的代码将与Map的其他实现一起使用,并且将能够使用所有为Maps设计的Java API。 如果您使用而不是s 编写代码,则您的代码将在非Android项目中运行。 地图会覆盖,而不会覆盖。 但是,每当我尝试在Android项目中使用带有整

  • 问题内容: 我可以使用哪些情况?文档说,如果我希望我的收藏集是不可变的,则可以使用此方法。 为什么我要一个不变的空集合? 有什么意义? 问题答案: 从 有效的Java , 项目#43 - 演示返回一个空的集合,甚至演示如何使用这些,和对集合类的方法来得到一个空的集合,也有保持不变的额外好处。从 项目#15开始 。 来自Collections-emptySet-Collections-emptyLi

  • 问题内容: 我正在寻找一种重命名Hashmap密钥的方法,但是我不知道在Java中是否可行。 问题答案: 尝试删除该元素,然后使用新名称再次放置它。假设地图中的键是,则可以通过以下方式实现:

  • 问题内容: 我正在将值放入形式的哈希图中, 我想使用map方法创建一个列表。 要么 但是,它将引发异常: 线程“主”中的异常java.lang.ClassCastException: java.util.HashMap $ Values无法转换为java.util.List 但是它允许我将其传递给列表的创建: 问题答案: 说明 因为返回a ,而不能将a 转换为an ,所以得到。 我建议使用构造函数

  • 问题内容: 我想收集一个用户,用户将有多个商店作为文档,每个文档都有storeName,storeAddress和字段availableProducts。我的问题是如何管理availableProducts数组?我知道Firestore无法处理数组,我应该使用HashMap。我的可用产品可能具有产品名称,产品价格等字段。我是Firebase的新手,如何availableProduct在Androi

  • 问题内容: 我目前有一个电子表格类型程序,该程序将其数据保存在HashMaps的ArrayList中。当我告诉您这还不理想时,您无疑会感到震惊。开销似乎使用的内存比数据本身多5倍。 这个问题询问有效的馆藏库,答案是使用Google馆藏。 我的跟进是“ 哪一部分? ” 。我一直在阅读文档,但感觉不像是哪种类最适合。(我也向其他图书馆或建议开放)。 因此,我正在寻找可以使我以最小的内存开销存储密集电子