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
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
)
new HashMap()
creates an empty hashmapnew 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 pairsget(key:*) : *
returns the value stored for that key.set(key:*, value:*) : HashMap
stores a key-value pairmulti(key:*, value:*, key2:*, value2:*, ...) : HashMap
stores several key-value pairscopy(other:HashMap) : HashMap
copies all key-value pairs from other to this instancehas(key:*) : Boolean
returns whether a key is set on the hashmapsearch(value:*) : *
returns key under which given value is stored (null
if not found)delete(key:*) : HashMap
deletes a key-value pair by keyremove(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 keysvalues() : Array<*>
returns an array with all the valuesentries() : Array<[*,*]>
returns an array with [key,value] pairssize : Number
the amount of key-value pairscount() : Number
returns the amount of key-value pairs (deprecated)clear() : HashMap
deletes all the key-value pairs on the hashmapclone() : HashMap
creates a new hashmap with all the key-value pairs of the originalhash(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 oneAll methods that don't return something, will return the HashMap instance to enable chaining.
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');
map.set("some_key", "some value");
map.get("some_key"); // --> "some value"
var map = new HashMap();
map.set("key1", "val1");
map.set("key2", "val2");
map.size; // -> 2
map.set("some_key", "some value");
map.delete("some_key");
map.get("some_key"); // --> undefined
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"
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
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}`)
}
map
.set(1, "test 1")
.set(2, "test 2")
.set(3, "test 3")
.forEach(function(value, key) {
console.log(key + " : " + value);
});
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
问题内容: 我正在用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馆藏。 我的跟进是“ 哪一部分? ” 。我一直在阅读文档,但感觉不像是哪种类最适合。(我也向其他图书馆或建议开放)。 因此,我正在寻找可以使我以最小的内存开销存储密集电子